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());
            }
        }
Beispiel #2
0
        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();
        }