udpclient получает трансляцию только локально (c#, Unity)

Я хочу получить сообщение UDP, которое было передано на 255.255.255.255 с UdpClient в Unity. Но какую бы комбинацию настроек я ни пробовал, он получает сообщение только в том случае, если оно было отправлено с локального хоста. Я пробовал примерный код из этих ресурсов, не работал:

Я запускаю код под задачей.

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

Я использовал несколько закомментированных строк в комбинации.

  • Когда я отправляю что-то из того же приложения на 255.255.255.255 с другим UdpClient на порту 9000, это работает, как и ожидалось.
  • When I send something from any other machine on the network to 255.255.255.255
    • any machine in the network receives it (checking with PacketSender on osx devices)
    • На машине Windows, на которой я разрабатываю это приложение, сообщение получено UdpSenderReceiver
    • Но udpClient изнутри Unity ничего не получает — и Firewall мне ничего не спрашивает и не говорит.

В чем тут может быть дело?


person IARI    schedule 26.04.2020    source источник
comment
Я что-то понял: похоже, это какая-то проблема с брандмауэром, потому что он работает, когда я отключаю брандмауэр Windows. Я просто озадачен тем, что он без проблем работает с инструментом UdpSenderReceiver...   -  person IARI    schedule 26.04.2020


Ответы (1)


Очевидно, Защитник Windows по умолчанию блокирует редактор Unity (но не UdpSenderReceiver).

Мне пришлось решить эту проблему, допустив редактор Unity в общественное достояние.

image

Правила для

  • Редактор Unity 2019.3.3f1
  • Редактор Unity 2019.3.4f1

присутствовали и не были изменены.
Я изменил правило для редактора Unity 2019.2.4f1, чтобы разрешить доступ из общедоступного домена (я просто разрешил все домены).

person IARI    schedule 26.04.2020