private void AcceptTcpClientCallback(IAsyncResult ar) { TcpListener myListener = ar.AsyncState as TcpListener; TcpClient client = myListener.EndAcceptTcpClient(ar); OnReceiveMessage?.Invoke(new Message() { Name = "Server", Content = $"Connected {client.Client.RemoteEndPoint.ToString()}" }); ReadWriteObject readWriteObject = new ReadWriteObject(client); rwoList.Add(readWriteObject); readWriteObject.BeginRead(ReadCallback); AcceptConnect(); }
private void ReadCallback(IAsyncResult ar) { ReadWriteObject readWriteObject = null; try { readWriteObject = ar.AsyncState as ReadWriteObject; int count = readWriteObject.EndRead(ar); if (count == 0) { readWriteObject.Close(); readWriteObject = null; return; } if (readWriteObject != null) { if (count > 0) { DealWithFeedBack(readWriteObject, count); } } } catch (Exception e) { if (readWriteObject != null) { OnReceiveMessage?.Invoke(new Message() { Name = "ServerError", Content = $"{readWriteObject.RemoteEndPoint}已离线" }); rwoList.Remove(readWriteObject); readWriteObject.Close(); readWriteObject = null; } else { OnReceiveMessage?.Invoke(new Message() { Name = "ServerError", Content = e.Message }); } } if (readWriteObject != null) { try { readWriteObject.BeginRead(ReadCallback); } catch (Exception e) { OnReceiveMessage?.Invoke(new Message() { Name = "ServerError", Content = $"{readWriteObject.RemoteEndPoint}已离线" }); if (readWriteObject != null) { rwoList.Remove(readWriteObject); readWriteObject.Close(); readWriteObject = null; } } } }