1.TCP三次握手、四次挥手图
2.基于TCP开发一款远程CMD程序
客户端连接服务器后,可以向服务器发送命令
服务器收到命令后执行,无论执行是否成功,无论执行几遍,都将执行结果返回给客户端
注意: 执行系统指令使用subprocess模块完成.
#服务端
import socket
import subprocess
server=socket.socket()
server.bind(
('127.0.0.1',8899)
)
server.listen(5)
while True:
conn,addr=server.accept()
print(addr)
while True:
try:
cmd=conn.recv(1024).decode('utf8')
if len(cmd)==0:
continue
if cmd=='q':
break
conn.send(cmd.encode('utf8'))
res=subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
# print(res)
data1=res.stdout.read()
data2=res.stderr.read()
if data1:
conn.send(data1)
else:
conn.send(data2)
except Exception as e:
print(e)
break
conn.close()
import socket
client=socket.socket()
client.connect(
('127.0.0.1',8899)
)
while True:
cmd=input('请输入要执行的命令: ').strip()
client.send(cmd.encode('utf8'))
if cmd=='q':
break
data=client.recv(1024).decode('gbk')
print(data)
data1=client.recv(1024).decode('gbk')
print(data1)
client.close()