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()