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()
                    
                
                
            
        
浙公网安备 33010602011771号