网络编程之黏包

服务端:
import socket,struct,subprocess
server = socket.socket()
IPPORT = ('192.168.191.1',8008)
server.bind(IPPORT)
server.listen(5)
while 1:
print('loading...')
conn,addr = server.accept()
print('%s已连接'%addr[0])
while 1:
cmd = conn.recv(1024).decode('utf8')
print('收到了指令')
res = subprocess.Popen(cmd,
shell=True,
stderr=subprocess.PIPE,
stdout=subprocess.PIPE
)
out = res.stdout.read()
err = res.stderr.read()
print("out响应长度", len(out))
print("err响应长度", len(err))
if err:
message = err
else:
message = out
conn.send(struct.pack("i", len(message)))
conn.send(message)
客户端:
import socket,struct,subprocess,hashlib
client = socket.socket()
client.connect(('192.168.191.1',8008))
while 1:
user_input = input("请输入指令>>>")
client.send(user_input.encode('utf8'))
head_data_length = struct.unpack('i',client.recv(4))[0]
data_length = 0
data=b""
while data_length<head_data_length:
recv_data = client.recv(1024)
data +=recv_data
data_length += len(recv_data)
print(data.decode('gbk'))

猜你喜欢

转载自www.cnblogs.com/Treasuremy/p/9585403.html