UWP Open 2x Server Listening (BindServiceNameAsync("некоторый порт #)" в 1 приложении

Для UWP я пытаюсь открыть 2 порта для прослушивания входящего соединения:

BindServiceNameAsync("6000")
BindServiceNameAsync("6001")

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

Мой код такой:

Public Async Sub IDPserverStart()
    Dim socketListener = New Windows.Networking.Sockets.StreamSocketListener
    AddHandler socketListener.ConnectionReceived, AddressOf TCPconnectedProcess
    Try
        Await socketListener.BindServiceNameAsync("6001")

    Catch ex As Exception
        socketListener.Dispose()
        Debug.WriteLine("IDPserverStart() ERR: " & ex.Message)
    End Try
End Sub

Public Async Sub OPSserverStart()
    Dim socketListener = New Windows.Networking.Sockets.StreamSocketListener
    AddHandler socketListener.ConnectionReceived, AddressOf OPSconnectedProcess
    Try
        Await socketListener.BindServiceNameAsync("6000")
    Catch ex As Exception
        socketListener.Dispose()
        Debug.WriteLine("OPSserverStart() ERR: " & ex.Message)
    End Try
End Sub

2 ответа

Решение

Нет ограничений на количество прослушиваемых портов для приложений в Windows IoT Core. Причина в правилах брандмауэра для политики безопасности соединения. Добавьте правило брандмауэра в Windows IoT Core, как показано ниже, с помощью PowerShell для Windows IoT или запустив команду на портале устройства (Процессы-> Команда запуска):

netsh advfirewall firewall add rule name="Open Port 6001" dir=in action=allow protocol=TCP localport=6001

Кстати, вы можете использовать следующий командлет, чтобы проверить правила на вашем устройстве.

netsh advfirewall firewall show rule status=enabled name=all

Убедитесь, что вы проверили возможность использования частных сетей (клиент и сервер) в Package.appxmanifest серверного приложения, а затем протестируйте соединение между различными устройствами.

Другие вопросы по тегам