day 26作业

TCP三次握手、四次挥手图

![](https://images.cnblogs.com/cnblogs_com/LZF-190903/1541387/o_TCP四次挥手 .jpg)

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

​ 注意: 执行系统指令使用subprocess模块完成.

# cmd服务器
from socket import *
import subprocess

server = socket(AF_INET, SOCK_STREAM)

server.bind(
    ('127.0.0.1', 8333)
)
server.listen(3)

print('start>>>')
while True:
    conn, client_addr = server.accept()
    while True:
        try:
            print(client_addr)

            cmd = conn.recv((1024)).decode('utf8')
            if len(cmd) == 0:
                break
            print('cmd:', cmd)

            res = subprocess.getoutput(cmd)
            print(res)
            conn.send(res.encode('utf8'))

        except Exception as e:
            e = str(e)
            conn.send(e.encode('utf8'))
            break

    conn.close()

# 客户端
import socket

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(
    ('127.0.0.1',8333)
)

while True:
    try:
        data = input('to cmd>>>').encode('utf8')
        client.send(data)
        data = client.recv(1024).decode('utf8')
        print('server>>>',data)
    except Exception as e:
        print(e)
        break
client.close()

原文地址:https://www.cnblogs.com/LZF-190903/p/11695610.html