首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TCP_NODELAY未禁用Nagle

TCP_NODELAY未禁用Nagle
EN

Stack Overflow用户
提问于 2019-12-06 05:09:11
回答 1查看 62关注 0票数 0

我希望立即(和单独)发送数据包,但即使在socket.send(...)之前设置socket.setsockopt(IPPROTO_TCP, TCP_NODELAY, 1)时,客户端(使用socket.recv(1024))仍会多次接收数据包。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-06 05:36:28

禁用Nagle算法只会确保写入数据不会在发送方延迟。它不会阻止多个数据包的有效负载在接收方积累。recv(1024)将尝试从读缓冲区中获取多达1024个字节,并且它不关心这些字节是在单个分组内还是在多个分组内发送的。

通常,TCP是字节流,没有隐含的消息语义。这不会通过调用一些套接字选项来改变,它仍然必须被视为字节流。您希望拥有的任何消息语义都必须在此字节流之上的应用程序中实现。

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

https://stackoverflow.com/questions/59203296

复制
相关文章

相似问题

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