public void ProcessNextRequest() { using (TcpClient socket = _serverListener.AcceptTcpClientAsync().Result) { var recvStream = new BinaryReader(socket.GetStream()); Message request = Message.ReadFrom(recvStream); Console.WriteLine($"Read request from socket {request}"); IMessageProcessor processor = _messageProcessors[request.Type]; Message response = processor.ProcessRequest(request, socket.Client.RemoteEndPoint); Console.WriteLine($"Writing response to socket {response}"); var sendStream = new BinaryWriter(socket.GetStream()); response.WriteInto(sendStream); sendStream.Flush(); } }