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

时间:2020-04-26 06:00:20

标签: c# unity3d udpclient receiver

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

我正在任务下运行代码。

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})");
    }
}

我将几个注释行组合使用。

  • 当我在同一应用程序中通过端口9000上的另一个UdpClient向255.255.255.255发送消息时,它会按预期工作。
  • 当我从网络上的任何其他计算机向255.255.255.255发送邮件时
    • 网络中的任何计算机都可以接收它(在osx设备上使用PacketSender检查)
    • 在我正在开发此应用程序的Windows计算机上,该消息由UdpSenderReceiver接收
    • 但是Unity内部的udpClient没有收到任何内容-防火墙也没有询问或告诉我任何内容。

这里可能是什么问题?

1 个答案:

答案 0 :(得分:0)

显然,Windows Defender默认情况下会阻止Unity编辑器(但不会阻止 UdpSenderReceiver )。

我必须通过在公共领域接受Unity编辑器来解决此问题

image

规则

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

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

相关问题