Csharp/C#教程:套接字ReceiveAsync合并数据包分享


套接字ReceiveAsync合并数据包

我打算通过套接字接收数据包,但由于它们是从发送方以高频率发送的,因此它们中的一些被打包成单个byte数组。 然后SocketAsyncEventArgs.Buffer保存多个数据包,即使它们是单独发送的(使用wiresharkvalidation)。

我已经尝试对传入的数据包进行排队并异步处理它们,但我仍然得到相同的结果。

这种行为可能是什么原因?

这就是TCP的工作原理。 TCP连接是双向字节流 ,您必须将其视为这样。 从一端单个发送可能导致接收端的多次读取,反之亦然,多次发送可能最终在一次读取中,并且传输不保留应用程序消息边界。

您必须缓冲输入,直到您知道有完整的应用程序消息。 常见的方法是:

我可能会误会,但这不是纳格尔算法的开头吗? 你的套接字应该有一个禁用它的标志。

上述就是C#学习教程:套接字ReceiveAsync合并数据包分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1031237.html

(0)
上一篇 2022年1月13日
下一篇 2022年1月13日

精彩推荐