Ở phía máy khách, tôi cần biết khi nào/nếu kết nối ổ cắm của tôi bị hỏng. Tuy nhiên, thuộc tính Socket.Connected luôn trả về true, ngay cả sau khi phía máy chủ bị ngắt kết nối và tôi đã thử gửi dữ liệu qua nó. Bất cứ ai có thể giúp tôi tìm ra những gì đang xảy ra ở đây. Tôi cần biết khi nào một ổ cắm đã bị ngắt kết nối.Làm thế nào để biết khi nào một Ổ cắm đã bị ngắt kết nối
Socket serverSocket = null;
TcpListener listener = new TcpListener(1530);
listener.Start();
listener.BeginAcceptSocket(new AsyncCallback(delegate(IAsyncResult result)
{
Debug.WriteLine("ACCEPTING SOCKET CONNECTION");
TcpListener currentListener = (TcpListener)result.AsyncState;
serverSocket = currentListener.EndAcceptSocket(result);
}), listener);
Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Debug.WriteLine("client socket connected: " + clientSocket.Connected);//should be FALSE, and it is
clientSocket.Connect("localhost", 1530);
Debug.WriteLine("client socket connected: " + clientSocket.Connected);//should be TRUE, and it is
Thread.Sleep(1000);
serverSocket.Close();//closing the server socket here
Thread.Sleep(1000);
clientSocket.Send(new byte[0]);//sending data should cause the socket to update its Connected property.
Debug.WriteLine("client socket connected: " + clientSocket.Connected);//should be FALSE, but its always TRUE
Xem http://stackoverflow.com/questions/722240/instantly-detect-client-disconnection-from-server-socket để thảo luận thêm. – EricLaw