首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数据包按固定间隔发送时会进行堆叠

数据包按固定间隔发送时会进行堆叠
EN

Stack Overflow用户
提问于 2011-08-01 22:55:32
回答 4查看 151关注 0票数 2

我正在尝试以固定的时间间隔(每秒)通过TCP套接字发送消息。有时不会发送完整的消息,或者会将2-4条消息堆叠在一起并立即发送。我有if语句来判断返回值是否为0或< 0,但这些语句从来都不是真的。我尝试了一种显而易见的方法,即检查send()的确切返回值,看看发送的字节是更少还是更多。它只返回我在要发送的参数中指定的数字(即使发送的字节较少,这在发送之前阻塞的情况下也是有意义的)。那么,有没有一种准确的方式来说“发送的数据包大小合适吗?不是吗?-做点什么”?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-08-01 23:05:09

TCP提供了可靠的字节流,没有消息边界。如果您需要知道消息的长度,则必须将其构建到协议中,例如:使用指定消息长度的2字节头发送每条消息。

票数 3
EN

Stack Overflow用户

发布于 2011-08-01 22:59:18

TCP没有这样的功能。如何将TCP流分割为数据包取决于内核中的网络堆栈。话虽如此,你可以在你的套接字上设置选项来禁用Nagle algorithm

票数 2
EN

Stack Overflow用户

发布于 2011-08-01 22:58:59

如果我没有理解错的话,有时你发送两个或更多的数据包,它们在远端作为一个数据包被接收。

这就是TCP/IP的本质。您不能保证数据包将以不同的方式到达,只保证它们将按顺序和可靠地到达。

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

https://stackoverflow.com/questions/6900273

复制
相关文章

相似问题

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