粘包问题以及解决方法
一、粘包问题
1、问题一:无法确认对方发送过来数据的大小,对数据接收有影响
server.py文件内容:
"""
先启动套接字服务端
注意:
客户端一次发送,服务端先一次接收,再发送
"""
import socket
import subprocess
server = socket.socket()
server.bind(("127.0.0.1", 9527))
server.listen(5)
while True:
conn, addr = server.accept()
print(addr)
while True:
try:
# 从内存中获取数据
data = conn.recv(1024)
if len(data) == 0:
continue
data = data.decode("utf-8")
if data == "q":
break
# 调用subprocess,对终端进行操作,并获取操作后正确或错误的结果
# 接收转码后的字符串
obj = subprocess.Popen(data, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# 将结果交给result变量
result = obj.stdout.read() + obj.stderr.read()
print(result.decode("gbk"))
# 将结果返回给客户端
conn.send(result)
except Exception as e:
print(e)
break
conn.close()

![粘包问题以及解决方法[Python常见问题]](https://www.zixueka.com/wp-content/uploads/2023/10/1696934181-741ca6b8a595b14.jpg)
