套接字ReceiveAsync合并数据包
我打算通过套接字接收数据包,但由于它们是从发送方以高频率发送的,因此它们中的一些被打包成单个byte
数组。 然后SocketAsyncEventArgs.Buffer
保存多个数据包,即使它们是单独发送的(使用wireshark
validation)。
我已经尝试对传入的数据包进行排队并异步处理它们,但我仍然得到相同的结果。
这种行为可能是什么原因?
这就是TCP的工作原理。 TCP连接是双向字节流 ,您必须将其视为这样。 从一端单个发送可能导致接收端的多次读取,反之亦然,多次发送可能最终在一次读取中,并且传输不保留应用程序消息边界。
您必须缓冲输入,直到您知道有完整的应用程序消息。 常见的方法是:
我可能会误会,但这不是纳格尔算法的开头吗? 你的套接字应该有一个禁用它的标志。
上述就是C#学习教程:套接字ReceiveAsync合并数据包分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1031237.html