Поисковый сервер с UDP - PullRequest
1 голос
/ 06 мая 2019

Задача кода - найти серверы, которые отвечают на вопрос #SERVER. Если я ввожу IP-адрес сервера работает нормально, но не по адресу 192.168.1.255.

Спасибо за помощь!

Мой код здесь:

static void Main(string[] args)
        {
            Console.WriteLine(IPAddress.IPv6Any);

            UdpClient udpClient = new UdpClient();

            try
            {

                udpClient.EnableBroadcast = true;
                udpClient.Connect("192.168.1.255",80);


                // Sends a message to the host to which you have connected.
                Byte[] sendBytes = Encoding.ASCII.GetBytes("#SERVER");

                udpClient.Send(sendBytes, sendBytes.Length);

                //IPEndPoint object will allow us to read datagrams sent from any source.
                IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);

                // Blocks until a message returns on this socket from a remote host.
                Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint);
                string returnData = Encoding.ASCII.GetString(receiveBytes);

                // Uses the IPEndPoint object to determine which of these two hosts responded.
                Console.WriteLine("This is the message you received " +
                                             returnData.ToString());
                Console.WriteLine("This message was sent from " +
                                            RemoteIpEndPoint.Address.ToString() +
                                            " on their port number " +
                                            RemoteIpEndPoint.Port.ToString());

                udpClient.Close();


            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }

            Console.ReadKey();
        }
'''

1 Ответ

0 голосов
/ 06 мая 2019

192.168.1.255 или лучше ЛЮБОЙ IP-адрес, заканчивающийся 255, является широковещательным адресом. Сообщения, отправленные на этот IP-адрес, не предназначены специально, но будут (в большинстве случаев) транслироваться на все устройства в вашей сети (исключения могут соответствовать вашей локальной конфигурации). Если устройства в вашей сети реагируют на широковещательные сообщения или нет, зависит от их конфигурации. Однако отправка сообщения об обнаружении на адрес brodcast, как и вы, не имеет особого смысла, поскольку не разрешается назначать этот IP-адрес любому устройству.

...