Beispiel #1
0
        public void ServerLoop()
        {
            var externalIp = JsonConvert.DeserializeObject <MappingService.IpJson>(new WebClient().DownloadString("https://api.ipify.org/?format=json")).Ip;
            var epmy       = IPAddress.Parse(externalIp);

            Console.WriteLine("[Server]Me : " + epmy.AddressFamily.ToString());
            var ipep = new IPEndPoint(IPAddress.Any, Port);

            if (epmy.AddressFamily == AddressFamily.InterNetworkV6)
            {
                ipep = new IPEndPoint(IPAddress.IPv6Any, Port);
            }
            var client = new UdpClient(epmy.AddressFamily);

            client.Client.Bind(ipep);
            var ep = new IPEndPoint(IPAddress.Any, 0);

            while (true)
            {
                var rr = client.Receive(ref ep);
                var ss = Encoding.UTF8.GetString(rr);
                _server.ToParseQueue.Enqueue(() => _server.ParseRequest(ss, Peer.FromIPEndPoint(ep)));
            }
            Console.WriteLine("[Server]Closing server..");
        }