SocketReceiveAsyncMergesPackets我打算通过socket接收数据包,但是由于它们是从发送方高频发送的,所以有些打包成一个字节数组。SocketAsyncEventArgs.Buffer然后保存多个数据包,即使它们是单独发送的(使用wireshark验证)。我试过对传入的数据包进行排队并异步处理它们,但我仍然得到相同的结果。这种行为的原因可能是什么?这就是TCP的工作原理。TCP连接是双向字节流,您必须这样对待它。来自一端的单个发送可能导致接收端的多次读取,反之亦然,多次发送可能以一次读取结束,并且传输不保留应用程序消息边界。你必须缓冲输入,直到你知道你有一个完整的应用程序消息。常见的做法是:我可能弄错了,但这不就是内格尔算法的开始吗?您的套接字应该有一个标志来禁用它。以上就是C#学习教程的全部内容:SocketReceiveAsync合并数据包分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
