首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拆分python包?

拆分python包?
EN

Stack Overflow用户
提问于 2010-10-12 20:17:17
回答 3查看 2.2K关注 0票数 1

有没有一种方法可以区分正在发送的数据包?例如:

python接收数据

it处理数据

客户端发送第一个数据包

客户端发送第二个数据包

python接收数据,我可以接收第一个包而不是缓冲区中的所有信息吗

我知道我可以设置它,这样它就会发送我确认的数据,并且客户端不会发送更多的数据,我已经确认处理了最后一块,但我宁愿不发送

代码语言:javascript
复制
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(("", 2000))
sock.listen(5)

所有相关的套接字数据

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-12 23:30:15

基本上有两种方法:

  1. 在每个数据包的开头,发送一个整数,指定该数据包的长度。当您接收数据时,首先读取整数,然后读取更多字节作为第一个数据包。
  2. 会在数据包之间发送某种特殊的标记。只有当您能保证标记不会出现在包中时,这才起作用。

正如S.Lott所指出的,您可以使用UDP (它是基于数据包的)而不是TCP (它是基于流的),但是这样就放弃了TCP提供的其他功能(重传丢弃的数据包、连续的数据包和拥塞控制)。编写自己的重传代码并不太难,但拥塞控制很难做到正确。

票数 1
EN

Stack Overflow用户

发布于 2010-10-12 23:04:32

是否有一种方法可以区分正在发送的数据包?

是。使用UDP而不是TCP。

票数 0
EN

Stack Overflow用户

发布于 2010-10-13 00:56:55

网络字符串是一种用于发送数据包的简单序列化格式。每个数据包的形式为'length: data‘。http://en.wikipedia.org/wiki/Netstring

像twisted这样的Python网络框架直接支持netstring。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3914542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档