예제 #1
0
        public void Listener()
        {
            Task.Run(async() =>
            {
                using var updClient = udp;
                while (true)
                {
                    var result = await updClient.ReceiveAsync();
                    try
                    {
                        byte[] resultBytes = result.Buffer;
                        Package package    = Package.fromBytes(resultBytes);
                        if (package.isManagementMessage())
                        {
                            ManagementMessage message = Package.ReceiveManagementMessage(package);

                            if (message.isRoutingTableRequest())
                            {
                                Logs.LogsReceiveRoutingTableRequest(message);
                                String routeTable       = gtJSONAnswer(message);
                                ManagementAnswer answer = ManagementAnswer.RouterAnswer(routeTable);
                                byte[] package1         = Package.RoutingTables(answer).toBytes();
                                Logs.LogsSendRoutingTable(message);
                                udp.Send(package1, package1.Length, message.getRequesterEndPoint());
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        Logs.LogsManagementException(e);
                    }
                }
            });
        }
예제 #2
0
        public void asyncStart()
        {
            listener();

            while (true)
            {
                ManagementMessage message = ManagementMessage.RoutingTableRequest(Name, EndPoint);


                Package package2     = Package.ManagementMessage_(message);
                byte[]  messageBytes = package2.toBytes();
                Logs.LogsSendRoutingTableRequest(message, Name);
                udp.Send(messageBytes, messageBytes.Length, new IPEndPoint(IPAddress.Parse("127.0.0.2"), 4321));
                Thread.Sleep(5000);
                if (nhfletable_set == true)
                {
                    break;
                }
            }

            while (true)
            {
                Console.ReadLine();
            }
        }
예제 #3
0
        public String gtJSONAnswer(ManagementMessage message)
        {
            var jsonFile = File.ReadAllText(DevicesList[message.getMessage()]);

            return(jsonFile);
        }