Всем привет! Как определить, что данные больше не поступают с удалённого хоста (работа с асинхронным сокетом)
//Начинаем получать данные
| Код | public void makeConnections() { try { if (null != socket) { socket.Close(); }
IPHostEntry localMachineInfo = Dns.GetHostEntry(Dns.GetHostName()); IPHostEntry remoteMachineInfo = Dns.GetHostEntry("albertcomp"); IPEndPoint serverEndpoint = new IPEndPoint(remoteMachineInfo.AddressList[0], 13000); IPEndPoint myEndpoint = new IPEndPoint(localMachineInfo.AddressList[0], 0);
socket = new Socket(myEndpoint.Address.AddressFamily, SocketType.Stream, ProtocolType.Tcp); socket.Connect(serverEndpoint); socket.BeginReceive(incomingMessage, 0, 256, SocketFlags.None, new AsyncCallback(ReceiveCallback), incomingMessage); } catch (Exception exception) { Console.WriteLine(exception.ToString()); } }
|
| Код | private void ReceiveCallback(IAsyncResult result) { try { int num_read = socket.EndReceive(result); if (num_read>0) { bytelist.AddRange((byte[])result.AsyncState); socket.BeginReceive(incomingMessage, 0, 256, SocketFlags.None, new AsyncCallback(ReceiveCallback), incomingMessage); } else { [color=orangered]//Сюда вообще не попадаем, почему?[/color] socket.Close(); Console.WriteLine("Server Connection Severed"); } } catch (ObjectDisposedException) { socket.Close(); Console.WriteLine("Sever Connection Severed"); } }
|
|