python 有没有办法区分正在发送的数据包?例如
python接收数据
它处理数据
客户端发送第一个数据包
客户端发送第二个数据包
python接收数据,我可以接收第一个数据包而不是缓冲区中的所有信息
我知道我可以对其进行设置,以便它发送我确认的数据,并且客户端不会发送更多数据,我已确认已处理最后一 block ,但我宁愿不发送
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(("", 2000))
sock.listen(5)
所有相关的套接字数据
最佳答案
基本上有两种方法:
在每个数据包的开头,发送一个整数,指定该数据包的长度。当您接收数据时,首先读取整数,然后读取更多字节作为第一个数据包。
在数据包之间发送某种特殊标记。仅当您可以保证标记不会出现在数据包内时,这才有效。
正如 S. Lott 指出的那样,您可以使用 UDP(基于数据包)而不是 TCP(基于流),但这样您就放弃了 TCP 提供的其他功能(重传丢失的数据包、顺序数据包和拥塞控制)。编写自己的重传代码并不难,但拥塞控制很难做到正确。
关于python - 拆分 python 数据包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3914542/