udpclient 仅在本地接收广播(c#、Unity)

udpclient receives broadcast only locally (c#, Unity)

我想接收一条在 Unity 中使用 UdpClient 广播到 255.255.255.255 的 UDP 消息。 但是无论我尝试哪种设置组合,如果它是从本地主机发送的,它只会收到一条消息。 我已尝试从这些资源中获取合适的示例代码,但没有成功:

我是运行任务下方的代码。

private void Listen()
{
    udpClient = new UdpClient(9000);
    //udpClient.Client.Bind(new IPEndPoint(IPAddress.Any, 9000));
    //udpClient.EnableBroadcast = true;
    //udpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
    //udpClient.ExclusiveAddressUse = false;
    //broadcastAddress = new IPEndPoint(IPAddress.Any, 9000);
    //udpClient.Client.Bind(broadcastAddress);
    //udpClient.Connect(broadcastAddress);
    //var from = new IPEndPoint(IPAddress.Any, 9000);
    var from = new IPEndPoint(0, 0);

    while (true)
    {
        var receive = udpClient.Receive(ref from);
        var msg = Encoding.UTF8.GetString(receive);
        Debug.Log($"Received message \"{msg}\"");
        Debug.Log($"from {from}  ({from.Address})");
    }
}

我结合使用了几个注释行。

这可能是什么问题?

显然 Windows 默认情况下 Defender 会阻止 Unity Editor(但不会 UdpSenderReceiver)。

我不得不通过在 public 域上承认 Unity 编辑器来解决它

规则

  • Unity 2019.3.3f1 编辑器
  • Unity 2019.3.4f1 编辑器

已存在且未修改。
我修改了 Unity 2019.2.4f1 编辑器的规则,以允许从 public 域访问(我只是允许所有域)。