private void _centralServerClient_ReceivedMessage(object sender, EventArgs e) { var client = sender as TcpClient; if (_nounce == Guid.Empty) { _nounce = new Guid(client.ReceiveMessage()); DebugInfo("CentralServerClient received nounce '{0}'.", _nounce); } else { var message = client.ReceiveMessageString(); var localEndpoint = localEndpointOf(client); client.Close(); DebugInfo("Expecting other side to listening to {0}.", message); DebugInfo("Starting Peer Server at {0}.", localEndpoint.Port); _peerServer = new SocketMessaging.Server.TcpServer(); _peerServer.Connected += _peerServer_Connected; _peerServer.Start(localEndpoint.Port); DebugInfo("Peer client connecting..."); var messageParts = message.Split(':'); var peerAddress = messageParts[0].Split('.').Select(x => byte.Parse(x)).ToArray(); var peerPort = int.Parse(messageParts[1]); _peerClient = TcpClient.Connect(new IPAddress(peerAddress), peerPort); _peerClient.SetMode(MessageMode.PrefixedLength); _peerClient.Disconnected += _peerClient_Disconnected; _peerClient.ReceivedMessage += _peerClient_ReceivedMessage; DebugInfo("Peer client sending nounce '{1}' to {0}.", remoteEndpointOf(_peerClient), _nounce); _peerClient.Send(_nounce.ToByteArray()); } }
static void Main(string[] args) { _tcpServer = new SocketMessaging.Server.TcpServer(); _tcpServer.Connected += TcpServer_Connected; _tcpServer.Start(8778); Console.WriteLine($"Tcp server started on port {_tcpServer.LocalEndpoint.Port}."); Console.WriteLine("Press Enter to stop server."); Console.ReadLine(); }