C # UDP широковещательный клиент / сервер не работает

Я использую .NET 2.0 и создал довольно простое приложение для широковещательной передачи udp и прослушиватель UDP.

Код слушателя:

Socket listener = new Socket( AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp );
IPEndPoint localEndPoint = new IPEndPoint( IPAddress.Any, 11000 );
listener.Bind( localEndPoint );
EndPoint ep = (EndPoint)localEndPoint;
Console.WriteLine("Ready to receive…");
byte[] data = new byte[1024];
int recv = listener.ReceiveFrom(data, ref ep);
string stringData = Encoding.ASCII.GetString(data, 0, recv);
Console.WriteLine("received: {0} from: {1}", stringData, ep.ToString());
listener.Close();

Код сервера:

int groupPort = 11000;
IPEndPoint groupEP = new IPEndPoint( IPAddress.Parse( "255.255.255.255" ), groupPort );

if ( radioButton2.Checked )
{
    groupEP = new IPEndPoint( IPAddress.Broadcast, groupPort );
}
    else if ( radioButton3.Checked )
{
    groupEP = new IPEndPoint( IPAddress.Parse( "172.16.75.15" ), groupPort );
}

Socket socket = new Socket( AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp );
socket.SetSocketOption( SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1 );
socket.SendTo( System.Text.ASCIIEncoding.ASCII.GetBytes( testTextBox.Text ), groupEP );

Сервер представляет собой простое приложение для Windows с 3 переключателями, кнопкой и текстовым полем.

Когда я запускаю сервер на отдельном компьютере и выбираю radioButton3, я прекрасно получаю сообщение на моем клиентском приемнике (который работает по IP-адресу 172.16.75.15). Однако, если я выберу первую или вторую радиокнопку (которая создает широковещательную рассылку или 255.255.255.255 в качестве IP-адреса), я ничего не получу. Теперь, если я запускаю клиент на том же компьютере, что и сервер, я могу получить сообщение, используя эти два варианта.

Я не уверен, что я делаю неправильно или может быть какой-то брандмауэр, предотвращающий UDP-сообщения в локальной сети. Есть идеи?

Спасибо,

Craig

Ответы на вопрос(6)

Ваш ответ на вопрос