粘包问题以及解决方法
一、粘包问题
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()