EndRead呼び出しで0バイトを受け取っているC#のAsync Socketsで、サーバーが実際に私たちを切断してしまったのでしょうか?Socket.EndRead 0バイトは切断されたことを意味しますか?
多くの例では、このようなケースが考えられますが、予想外に頻繁に切断されています。
このコードは正しいですか?または、endResult < = 0は実際に接続状態について何も意味しませんか?
private void socket_EndRead(IAsyncResult asyncResult)
{
//Get the socket from the result state
Socket socket = asyncResult.AsyncState as Socket;
//End the read
int endResult = Socket.EndRead(asyncResult);
if (endResult > 0)
{
//Do something with the data here
}
else
{
//Server closed connection?
}
}
私は実際にはSslStreamを使用していることを共有することを無視してはいけないと思うが、私は基本ストリームがソケットに沸騰することは確かだ。 しかし、SslStreamを使用しているため、ソケットの接続状態を確認するアクセス権がありません。おそらく私はEndReadから0バイトを受け取るたびにSslStream.CanReadをチェックしなければならないでしょうか? – Redth