粘包问题以及解决方法

粘包问题以及解决方法[Python常见问题]

一、粘包问题

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()
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 粘包问题以及解决方法