UWP 在 1 个应用程序中打开 2x 服务器监听 (BindServiceNameAsync("some port#))

UWP Open 2x Server Listening (BindServiceNameAsync("some port#)) in 1 Apps

对于 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

请确保您已经检查了服务器应用程序 Package.appxmanifest 中的 专用网络(客户端和服务器) 功能,然后测试不同设备之间的连接。

Windows IoT Core 上每个应用程序的侦听端口没有限制。原因是连接安全策略的防火墙规则。请通过设备门户中的 using PowerShell for windows IoT 或 运行 命令将防火墙规则添加到 Windows IoT Core 如下 cmdlet(进程->运行 命令):

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

BTW.You 可以使用以下 cmdlet 检查您设备中的规则。

netsh advfirewall firewall show rule status=enabled name=all