клиент hololens 2 tcp - права доступа

Я разрабатываю для hololens 2 в единстве, и теперь у меня проблема со связью через сокеты. Я пытаюсь получить TCP-клиент на hololens 2, и если я хочу подключиться к TCP-серверу, у меня на очках появляется следующая ошибка (в единстве это работает): System.Exception: была сделана попытка получить доступ к сокету в способ, запрещенный его разрешениями на доступ.

Я уже проверил разрешения в настройках проигрывателя: InternetClient, InternetClientServer, PrivateNetworkClientServer

Использование:

Единство 2019.4.2f1

Уровень совместимости Api .NET 4.x

Бэкэнд сценариев: IL2CPP

Целевая версия SDK: 10.0.18362.0

используя: Windows.Networking.Sockets.StreamSocket

какие-нибудь предложения?


person Robin Popelka    schedule 23.09.2020    source источник
comment
Похоже, ваше приложение не может привязаться к порту, это может быть удержано другим процессом. Не могли бы вы выбрать другой порт для прослушивания? Кроме того, мы всегда рекомендуем поток Unity LTS (долгосрочная поддержка) как лучшую версию, чтобы избежать некоторых известных проблем, и в настоящее время рекомендуется использовать Unity 2019.4.11f1: unity3d.com/unity/qa/lts-releases Таким образом, не могли бы вы сначала обновить версию unity, а затем снова попробовать эту функцию?   -  person Hernando - MSFT    schedule 24.09.2020
comment
Я попытался установить версию 2019.4.11f1, но безуспешно. Я хочу подключиться к локальной сети через порт 10004. Если я попытаюсь подключиться к клиенту с другого компьютера, все будет нормально. Есть другие предложения?   -  person Robin Popelka    schedule 24.09.2020


Ответы (2)


Я столкнулся с проблемой подключения очень давно, когда работал над Hololens1. Я не работал с сетевыми протоколами Hololens2. Но одна из самых больших проблем, с которыми я столкнулся, заключалась в том, что Hololens UWP C # и Unity C # отличаются друг от друга и создают конфликт. Возможно, вам потребуется указать директиву для связи. Просмотрите эту ссылку. Эти ребята очень хорошо объяснили проблему и решение.

Я предлагаю, если вы не отправляете постоянные запросы и периодически отправляете данные, попробуйте создать серверное приложение, которое принимает вызовы REST API. Это будет очень надежное решение.

person Samvid Jhaveri    schedule 07.10.2020
comment
Спасибо за ваш ответ. Я только что проверил манифест, и не было никаких возможностей, созданных из единства после создания сборки, хотя в настройках Player он был проверен, и теперь соединение работает! - person Robin Popelka; 09.10.2020

Я использую Unity 2019.4.13f1, и TCP-соединение работает нормально.

Пример кода:

public string ServerIp = "192.168.31.12";
private const int PORT = 9999;
private Socket Client;
public void CreateClient()
{
    Debug.Log("\r\nCreating Client...");

    Thread createClientAndConnect = new Thread(() =>
    {
        try
        {
            IPEndPoint serverEP = new IPEndPoint(IPAddress.Parse(ServerIp), PORT);
            Client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            Client.Connect(serverEP);

            Thread listenToServer = new Thread(Receive);
            listenToServer.IsBackground = true;
            listenToServer.Start(Client);
        }
        catch (Exception e)
        {
            Debug.LogError("Error when creating client");
            Debug.LogError(e.Message);
        }
    });
    createClientAndConnect.IsBackground = true;
    createClientAndConnect.Start();

    Debug.Log("Client is created");
}
person LuuSang    schedule 28.05.2021