网络编程

通过socket,实现客户端发送命令,将服务端执行出的结果,反回到客户端,主要4个步骤:
1、服务端返回数据;

2、服务端返回数据的大小;

3、客户端接收返回数据的大小;

4、客户端按返回数据大小接收数据;

一、客户端代码

#客户端
import socket
client=socket.socket() #生成socket连接对象
client.connect(("localhost",6969))
while True:
msg=input(">>>:")
if not msg:
continue
client.send(msg.encode("utf-8")) #发送命令到服务端 ;
cmd_res_size=client.recv(1024) #接收命的长度;
print ("命令结果大小为:",cmd_res_size)
print(type(cmd_res_size.decode()))
cmd_size=0
cmd_data=b''
while cmd_size!=int(cmd_res_size.decode()):
data=client.recv(1024)
cmd_size+=len(data.decode())
cmd_data+=data
else:
print ("cmd received done !",cmd_size)
print (cmd_data.decode())
client.close()

二、服务端
#服务端
import socket,os
so_server=socket.socket()
so_server.bind(("localhost",6969))
so_server.listen()
print ("等电话!")
while True: #实现多个链路连接;
conn,addr=so_server.accept()
print ("电话来了!")
while True:
data = conn.recv(1024)
print (data.decode())
res=os.popen(data.decode("utf-8")).read() #执行客户端命令
cmd_size=len(res)
conn.send(str(cmd_size).encode("utf-8"))
conn.send(res.encode("utf-8"))
so_server.close()


原文地址:https://www.cnblogs.com/wulafuer/p/10168927.html