Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            ConfigureLogging(Level.Info);

            var port           = 25555;
            var maxConnections = 5;
            var statusInterval = 10;
            var logFile        = "numbers.log";

            var localAddresses = Dns.GetHostAddresses(Dns.GetHostName());

            foreach (var localAddress in localAddresses)
            {
                nodeListManager.AddNodeToList(localAddress);
            }

            Run(port, maxConnections, statusInterval, logFile);
        }
Ejemplo n.º 2
0
        public void Handle(NodeListManager nodeListManager)
        {
            int bytesRead;

            // Read 4 byte header
            var buffer = new byte[_headerSize];

            while ((bytesRead = TryReadChunk(buffer)) == _headerSize)
            {
                string commandText = Encoding.UTF8.GetString(buffer);
                Console.WriteLine($"Command '{commandText}' received");
                switch (commandText)
                {
                case "GNDS":
                    var bytesToSend = nodeListManager.GetNodeList().ToByteArray();
                    //send payload length
                    _socketConnection.Send(BitConverter.GetBytes(bytesToSend.Length));
                    _socketConnection.Send(bytesToSend);
                    _socketConnection.Send(endBytes);
                    Console.WriteLine($"Sent nodelist.");

                    //add this requester to my node list
                    IPEndPoint remoteIpEndPoint = _socketConnection.RemoteEndPoint as IPEndPoint;
                    if (remoteIpEndPoint != null)
                    {
                        nodeListManager.AddNodeToList(remoteIpEndPoint.Address);
                    }

                    Console.WriteLine(nodeListManager.ToString());

                    break;

                default:
                    break;
                }
            }
        }