day26 作业

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

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

#服务端
import socket
import subprocess

server=socket.socket()

server.bind(('127.0.0.1',8888))

server.listen()

conn,addr=server.accept()
print(addr)

while True:
    data=conn.recv(1024).decode('utf-8')

    if not data:
        break

    print('接收到客户端的命令:',data)
    if data=='q':
        break

    res=subprocess.Popen(data,shell=True,
                         stderr=subprocess.PIPE,#接受错误
                         stdin=subprocess.PIPE,
                         stdout=subprocess.PIPE)#原来的值
    err=res.stderr.read()
    if err:
        data_err=err
    else:
        data_err=res.stdout.read()

    if not data_err:
        data_err='该命令无返回结果'.encode('gbk')

    conn.send(data_err)

conn.close()

# 客户端
import socket

cilent=socket.socket()

cilent.connect(('127.0.0.1',8888))
while True:
    send_msg=input('向服务器发送命令:')

    cilent.send(send_msg.encode('utf-8'))


    if send_msg=='q':
        break
    data=cilent.recv(1024).decode('gbk')
    print(data)

cilent.close()




posted @ 2019-10-17 21:29  风啊风啊  阅读(67)  评论(0编辑  收藏  举报