0

モックc#httpサーバーを作成しましたが、問題があります。クライアントが最初に接続を閉じると(応答のすべてのデータが受信された)、プログラムは例外をスローします。

InvalidOperationException:すべてのバイトが書き込まれるまでストリームを閉じることができません。

私は何をすべきか?サーバーソケットも閉じているということですか?

4

1 に答える 1

0

サーバーはリクエスト全体を読みましたか?

一般的には、自分の側の接続を閉じてから、0 バイトになるまで読み取り (これは相手側が接続を閉じたことを意味します)、ソケットを解放することをお勧めします。

private void SafeShutdown( Socket s )
{
    socket.Shutdown( Send );
    var buff = new byte[200];
    while( socket.Receive( buff ) > 0 )
        ;
    socket.Shutdown( Receive );
    socket.Close();
}
于 2012-10-04T09:42:28.033 に答える