int readCount;
byte[] buffer = new byte[128];
SocketError socketError;
TcpClient tcpClient = tcpListener.AcceptTcpClient();
tcpClient.Client.ReceiveTimeout = 500; // #1
// tcpClient.Client.Connected is **true** here.
readCount = tcpClient.Client.Receive(buffer, 0, buffer.Length, SocketFlags.None, out socketError); // reacCount > 0
// tcpClient.Client.Connected is **false** here.
Если # 1 заменено на tcpClient.Client.Blocking = false; , tcpClient.Client.Connected имеет правильное значение (true).
<ч />
Я установил для свойства Socket.ReceiveTime
значение 100 и вызвал Socket.Receive()
. Receive()
вернул целочисленное значение больше нуля. Никаких исключений не произошло.
После того, как я выполнил свою работу с скопированным буфером - я не использовал ни один из методов, связанных с Socket, - свойство Socket.Connected было изменено на false.
Почему?