Почему у меня не работает трансляция UDP? - PullRequest
4 голосов
/ 09 июня 2011

Я пытаюсь отправить UDP-трансляцию, но wireshark не сообщает о трафике. Вот фрагмент кода, который выполняет отправку:

void SendBroadcast()
{
    String^ ip = "255.255.255.255";
    int port = 30718;
    String^ message = "test";

    UdpClient^ udpClient = gcnew UdpClient();
    udpClient->EnableBroadcast = true;
    IPEndPoint^ ipDest = gcnew IPEndPoint(IPAddress::Parse(ip), port);
    cli::array<unsigned char>^ dgram = Encoding::ASCII->GetBytes(message);
    int bytesSent = udpClient->Send(dgram, dgram->Length, ipDest);

    if( bytesSent != message->Length )
    {
        // Failed to send
        Console::WriteLine(String::Format("Error: Failed to send all data (bytes sent: {0})", bytesSent));
    }
    else
    {
        Console::WriteLine(String::Format("Bytes sent: {0}", bytesSent));
    }
}

Он сообщает, что отправил данные (4 байта), так почему Wireshark не видит трафик? Я пытался с другим приложением, которое вещает на тот же порт, и трафик из этого приложения показывает нормально.

Чего мне не хватает?

[Редактировать] Я только что заметил сообщение в нижней части документации UdpClient , в которой говорится, что отправка на 255.255.255.255 на компьютере с Windows 7 не работает. Это не может относиться к операциям o / s в целом, хотя передача из другого приложения на номер 255.255.255.255 не будет выполнена?

1 Ответ

4 голосов
/ 09 июня 2011

Windows 7 обрабатывает 255.255.255.255 по-другому. Подробнее здесь: Отправка UDP-трансляции на Windows 7

...