分散システム用のメッセージ レイヤーを作成しています。IOCP、つまり Socket.XXXAsync メソッドを使用しています。
これは私がやっていることにかなり近いものです (実際、私の受信機能は彼に基づいています): http://vadmyst.blogspot.com/2008/05/sample-code-for-tcp-server-using.html
私が今見つけたのは、プログラムの開始時 (2 つのテスト サーバーが互いに通信している場合) に、.Buffer が完全にゼロで埋められている SAEA オブジェクトを毎回取得することですが、.BytesTransferred のサイズはバッファ(私の場合は1024)。
これは何を意味するのでしょうか?チェックする必要がある特別な条件はありますか? 私のシステムはこれを不完全なメッセージと解釈して先に進みますが、実際にデータが欠落しているのではないかと考えています。何も受信されていない場合は、コールバックが得られないという印象を受けました。いずれにせよ、WireShark を見ると、ゼロ長のパケットが入ってくることはありません。
Google で検索したときに次の情報を見つけましたが、問題が同じかどうかはわかりません: 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