1.整理TCP三次握手、四次挥手图

2.基于TCP开发一款远程CMD程序
客户端连接服务器后,可以向服务器发送命令
服务器收到命令后执行,无论执行是否成功,无论执行几遍,都将执行结果返回给客户端
注意: 执行系统指令使用subprocess模块完成.

# 服务端.py
import socket
import subprocess
sever = socket.socket()

sever.bind(('127.0.0.1',1111))

sever.listen(5)
while True:
    conn,addr = sever.accept()

    while True:
        try:
            data = conn.recv(1024).decode('utf8')
            if data =='q':
                break
            res = subprocess.Popen(data,shell=True,stderr=subprocess.PIPE,stdout=subprocess.PIPE)

            data1 = res.stdout.read()
            data2 = res.stderr.read()

            conn.send(data1+data2)

        except Exception as e:
            print(e)

    conn.close()
# 客户端,py
import socket
client = socket.socket()

client.connect(('127.0.0.1',1111))

while True:
    msg = input('>>>')

    client.send(msg.encode('utf8'))
    if msg == 'q':
        break

    data = client.recv(1024).decode('gbk')

    print(data)

client.close()

最新文章

  1. MVC5 网站开发实践 概述
  2. Spring中的cglib动态代理
  3. (转载)JavaWeb学习总结(五十一)——邮件的发送与接收原理
  4. CentOS 6.4下Squid代理服务器的安装与配置
  5. AVL树模板
  6. js动态加载css文件和js文件的方法
  7. CMAKE的用法
  8. Missing Ranges 解答
  9. 一篇非常经典的springMVC注解实现方式详解
  10. Visual Studio .NET、.NET Framework和C#之间的联系
  11. The Rose
  12. 实现最小宽度的几种方法及CSS Expression[转]
  13. BZOJ 2694: Lcm [莫比乌斯反演 线性筛]
  14. 2018-2019-2《Java程序设计》结对编程项目-四则运算 第一周 阶段性总结
  15. 部署--云服务器(RubyChina上的转帖); 附加用cap部署sidekiq
  16. Linux yum安装MySQL5.7
  17. log4j1 修改FileAppender解决当天的文件没有日期后缀
  18. Mercurial
  19. MongoDB(二):MongoDB简介及安装
  20. drone 学习三 条件步骤

热门文章

  1. SpringBootSecurity学习(02)网页版登陆配置类代替默认配置
  2. MySQL中四种隔离级别的演示
  3. Sentinel Cluster流程分析
  4. Spring 梳理 - JavaConfig、SPI、SCI、SpringSCI、WebApplicationInitializer、AbstractAnnotationConfigDispatcherServletInitializer、WebMvcConfigurationSupport
  5. 【SQL server初级】数据库性能优化二:数据库表优化
  6. 使用.NET Core中创建Windows服务(一) - 使用官方推荐方式
  7. lcy各种要填的坑
  8. Go中使用seed得到相同随机数的问题
  9. css 精灵图的使用
  10. 浅谈个人对客户端JavaScript同步、异步、执行顺序等概念的理解