private void NetMessageReader_CatanClientMessageReceived(object obj, NetworkMessageReaderReadCompletedEventArgs e) { if (e.NetworkMessage is CatanClientStateChangeMessage) { var gameStateMessage = e.NetworkMessage as CatanClientStateChangeMessage; if (catanClients.Exists(client => client.ID == gameStateMessage.ClientID && client.IPAddressPortNr.Equals(e.TcpClient.Client.RemoteEndPoint.ToString()))) { iLogicLayer.ClientGameStateChangeMessageReceived(gameStateMessage); } } }
private void NetMessageReader_CatanClientAuth_Request_ReadCompleted(object obj, NetworkMessageReaderReadCompletedEventArgs e) { lock (catanClients) { try { CatanClientAuthenticationRequestMessage authMessage = e.NetworkMessage as CatanClientAuthenticationRequestMessage; // Checking auth if (iLogicLayer.IsAuthenticationRequestMessageOk(authMessage)) { NetworkMessageWriter netMessageWriter = new NetworkMessageWriter(e.TcpClient); netMessageWriter.WriteError += (o, ee) => { ee.TcpClient.Close(); }; netMessageWriter.WriteCompleted += NetMessageWriter_CatanClientAuth_Response_WriteCompleted; netMessageWriter.WriteAsync(new CatanClientAuthenticationResponseMessage(authMessage)); } else { e.TcpClient.Close(); // Client wird rausgeworfen, wenn Pass falsch ist !! } } catch (Exception ex) { e.TcpClient.Close(); iLogicLayer.ThrowException(ex); } } }