私は自分の分散システム用のメッセージレイヤーを作成しています。私はIOCP、すなわちSocket.XXXAsyncメソッドを使用しています。私が今見つけた何 http://vadmyst.blogspot.com/2008/05/sample-code-for-tcp-server-using.htmlSocketAsyncEventArgsバッファがゼロでいっぱいです
は、そのプログラムの先頭である(2:ここでは
は私がやっているものにかなり近いもの(実際には、私の受信機能が、彼に基づいています)ですテストサーバ同士の会話)私は毎回.Bufferが0で満たされたSAEAオブジェクトをいくつも取得しますが、.BytesTransferredはバッファのサイズ(私の場合は1024)です。
これはどういう意味ですか?私が確認する必要がある特別な条件はありますか?私のシステムは、これを不完全なメッセージと解釈して動いていますが、私は実際にいくつかのデータが欠落しているのだろうかと思います。私は何も受け取られなければコールバックを得られないという印象を受けました。いずれにしても、WireSharkには、長さ0のパケットが入っていないことがわかります。
私はグーグルで次のものを見つけましたが、私の問題が同じかどうかはわかりません: 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
データの損失によるデータ処理エラーはありませんでしたので、何も失われていないと思います。しかし、それはなぜ方法が何度も何度も戻ってこない理由の問題を残しています。 – Carlos
簡単な説明なしで(コード付きで)必要なソリューションを提供することは難しいです。しかし、私はソケットでの経験があり、より抽象度の高いネットワークストリームを使用することをお勧めします。ネットワークストリームには、使用する非同期コールバックのすべての機能があります。 http://msdn.microsoft.com/en-us/library/system.net.sockets.networkstream.aspxおよびhttp://msdn.microsoft.com/en-us/library/system.net.socketsを参照してください。 networkstream.beginwrite.aspx HTH –
同じ基本コールですか?それは役に立つと思われる。また、私が参照しているコードはリンクにあります。 – Carlos