我正在为我的分布式系统编写消息层。我正在使用 IOCP,即 Socket.XXXAsync 方法。
这与我正在做的事情非常接近(事实上,我的接收功能是基于他的):http: //vadmyst.blogspot.com/2008/05/sample-code-for-tcp-server-using.html
我现在发现的是,在程序开始时(两个测试服务器相互通信)我每次都会得到一些 SAEA 对象,其中 .Buffer 完全用零填充,但 .BytesTransferred 的大小是缓冲区(在我的情况下为 1024)。
这是什么意思?我需要检查什么特殊情况吗?我的系统将此解释为一条不完整的消息并继续前进,但我想知道我是否真的遗漏了一些数据。我的印象是,如果没有收到任何内容,您将不会收到回电。无论如何,我可以在 WireShark 中看到没有任何零长度数据包进入。
我在谷歌上找到了以下内容,但我不确定我的问题是否相同: http ://social.msdn.microsoft.com/Forums/en-US/ncl/thread/40fe397c-b1da-428e -a355-ee5a6b0b4d2c
http://go4answers.webhost4life.com/Example/socketasynceventargs-buffer-not-ready-121918.aspx