UdpClient.EnableBroadcast值无效

时间:2012-11-13 13:43:06

标签: c# .net udp udpclient

我刚刚使用UdpClient并注意到设置为UdpClient.EnableBroadcasttruefalse没有任何(副作用),我能够播放无论如何:

using (UdpClient client = new UdpClient())
{
    byte[] data = Encoding.ASCII.GetBytes("Hello");
    while (true)
    {
        client.Send(data, data.Length, new IPEndPoint(IPAddress.Broadcast, 45678));
        Console.WriteLine("sent");
        Console.ReadKey();
    }
}

The MSDN page对此非常模糊,但如果您使用设置为false的属性进行广播,则听起来应该会导致异常:

  

获取或设置一个布尔值,指定UdpClient是否可以   发送或接收广播包。   ...   如果UdpClient允许广播数据包,则为true;否则,错误。默认值为false。

不是一个关键问题,但它让我感到奇怪。这是一个错误还是属性,所以你以后可以参考它,看看你是否打算用它来播放?

1 个答案:

答案 0 :(得分:0)

初始化udp套接字时需要启用广播模式,类似于

this.someUdpSocket.EnableBroadcast = true;
this.someUdpSocket.Client.Bind(new IPEndPoint(IPAddress.Any, 0));

新编辑:

以上不起作用,以下代码

this.someUdpSocket.Client.EnableBroadcast = false;

也不能达到目的。至于你的回答“是的,它可以被称为一个错误,或者该属性可能与其他一些背景相关。”

但是如果你想明确地禁用广播,你可以像下面这样做:

this.someUdpSocket.Client.SetSocketOption(SocketOptionLevel.Udp, SocketOptionName.Broadcast, false);

感谢您的动力。