Адрес уже используется Unity Android - PullRequest
2 голосов
/ 08 мая 2020

Я пытаюсь запустить HTTP-прослушиватель в приложении Android, но получаю исключение

SocketException: адрес уже используется

Unity Player делает не выдавать ошибок, как и сборка для Windows. netstat на устройстве показывает. что порт никем не занят, в чем может быть проблема? Может, что-то нужно добавить в манифест?

Мой код (порт 37273)

 private void Listen()
{
    Debug.Log("START HTTP LISTENIER!");
    listener = new HttpListener();
    listener.Prefixes.Add("http://localhost:" + port.ToString() + "/");
    listener.Prefixes.Add("http://127.0.0.1:" + port.ToString() + "/");
    listener.Prefixes.Add("http://*:" + port.ToString() + "/");
    listener.Start();
    while (connect)
    {
        try
        {
            Process(listener.GetContext());
        }
        catch (Exception ex)
        {
            Debug.Log("HTTP listener context Exeption: " + ex.ToString() + "\n  " + ex.Message);
        }
    }
}

StackTrace

05-08 07: 42: 15.751 4606 4699 E Unity: SocketException: адрес уже используется 05-08 07: 42: 15.751 4606 4699 E Unity: в System. Net .Sockets.Socket.Bind (System. Net .EndPoint localEP) [0x00043] в < 0813754e7cfa415ebfedff172c2dd6e0>: 0 05-08 07: 42: 15.751 4606 4699 E Unity: в System. Net .EndPointListener..ctor (System. Net .HttpListener listener, System. Net .IPAddress адрес, System.Int32 порт, безопасный System.Boolean) [0x00047] в <0813754e7cfa415ebfedff172c2dd6e0>: 0 05-08 07: 42: 15.751 4606 4699 E Unity: в System. Net .EndPointManager.GetEPListener (хост System.String, порт System.Int32 System. Net .HttpListener listener, System.Boolean secure) [0x0009d] в <0813754e7cfa415ebfedff172c2dd6e0>: 0 05-08 07: 42: 15.751 4606 4699 E Единство: в System. Net .EndPointManager.AddP p, System. Net .HttpListener listener) [0x0005e] в <0813754e7cfa415ebfedff172c2dd6e0>: 0 05-08 07: 42: 15.751 4606 4699 E Unity: в System. Net .EndPointManager.AddListener (System. Net .HttpListener listener) [0x0009c17e 08 07: 42: 15.751 4606 4699 E Unity: в System. Net .HttpListener.Start () [0x0000f] в <0813754e7cfa415ebfedff172c2dd6e0>: 0 05-08 07: 42: 15.751 4606 4699 E Unity: at WebServer.Listen ( ) [0x00093] в: 0 05-08 07: 42: 15.751 4606 4699 E Unity: в System.Threading.ThreadHe

Ответы [ 2 ]

1 голос
/ 08 мая 2020

Проверьте, вызывается ли этот код только один раз, потому что вызов этого дважды приведет к тому, что слушатель будет занимать тот же порт.

0 голосов
/ 09 мая 2020

Проблема решена, по какой-то причине Unity проигнорировала мою конфигурацию безопасности и вставила свою, изменив cleartextTrafficPermitted на false

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...