Получение широковещательных сообщений - PullRequest
0 голосов
/ 27 марта 2010

Я пытаюсь получать широковещательные сообщения с использованием кода C # в сети ISDN с интерфейсом BRI на моем конце.

Я вижу пакеты, отправленные на широковещательный IP-адрес (239.255.255.255) на некоторых портах с помощью инструмента Comm View.

Но когда я пытаюсь прослушать этот IP-адрес, он говорит, что адрес не в допустимом контексте.

Но когда я отправляю широковещательные сообщения на порт 255.255.255.255, я могу получать эти сообщения с кодом ниже.

В чем может быть проблема с этим IP-адресом - 239.255.255.255?

The code I use to listen to broadcast messages is..

UdpClient udp = new UdpClient();
IPEndPoint receiveEndPoint = new IPEndPoint(IPAddress.Any, 8013);
// If I use IPAddress.Parse("239.255.255.255") to listen to,
// it says "the address is not in a valid // context."
udp.Client.Bind(receiveEndPoint);
udp.BeginReceive(_Callback, udp);

static private void _Callback(IAsyncResult iar)
{
        try
        {
            UdpClient client = (UdpClient)iar.AsyncState;

            client.BeginReceive(_Callback, client);

            IPEndPoint ipRemote = new IPEndPoint(IPAddress.Any, 8013);

            byte[] rgb = client.EndReceive(iar, ref ipRemote);

            Console.WriteLine("Received {0} bytes: \"{1}\"",
            rgb.Length.ToString(), Encoding.UTF8.GetString(rgb));
        }
        catch (ObjectDisposedException)
        {
            Console.WriteLine("closing listening socket");
        }
        catch (Exception exc)
        {
            Console.WriteLine("Listening socket error: \"" +
            exc.Message + "\"");
        }
 }

Есть пакеты, отправленные на широковещательный IP-адрес (239.255.255.255), которые я вижу в инструменте Commview, но не могу получить их из кода ...

Кто-нибудь может мне помочь, пожалуйста?

Заранее благодарю,
Прасад Канчарла.

Ответы [ 2 ]

0 голосов
/ 27 марта 2010

Звучит так, как будто вы предполагаете, что адрес - это направленная широковещательная (локальная подсеть) широковещательная рассылка, когда он на самом деле находится в диапазоне IP-адресов, зарезервированном для многоадресной рассылки, что является совершенно другим.

0 голосов
/ 27 марта 2010

Я не так много сделал с многоадресной передачей, но я считаю, что подготовка к получению многоадресных пакетов - это двухэтапный процесс. Сначала вы привязываетесь к локальному IP-адресу, что вы и сделали с IPAddress.Any. Затем вам нужно указать, к какой группе многоадресной рассылки вы хотите присоединиться, используя объект MulticastOption с методом Socket.SetSocketOption.

Библиотека MSDN содержит пример для справки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...