在 Windows UWP 中访问更高的 UDP 端口

Accessing higher UDP ports in Windows UWP

我有一个最初是为 Win8 Modern 编写的应用程序。我使用 UDP 通过端口 54372 与外部硬件通信。

我将其移植到 Android 和 iOS,现在想将其重新移植回 UWP。 当我尝试访问我的 UWP 应用程序中的端口时,出现未知错误。我尝试了现代应用程序中的原始 DatagramSocket 方法,以及 Android 和 iOS 应用程序中的 System.Net.Sockets.UdpClient 方法。

然后我尝试了 运行 来自 Microsoft https://docs.microsoft.com/en-us/samples/microsoft/windows-universal-samples/datagramsocket/

的 DatagramSocket 示例

如果我使用他们的默认服务,没问题。如果我将其更改为 54372,我会收到错误消息:

System.Runtime.InteropServices.COMException: 'An attempt was made to access a socket in a way forbidden by its access permissions.

现在看来代码没问题,只是MS现在对我可以使用的端口施加了限制。

我需要对权限应用哪些更改才能允许我的应用程序访问此端口?硬件是在过去9年里一直在这个领域的商业产品,所以改变端口是不可能的。

谢谢, 旦

我发现了问题。它似乎是 Apple 的 Bonjour 服务。它只是 "taking" 它需要的单个 UDP 端口,而是分配了一个 100 的块。幸运的是我的默认端口位于这个块的中间。停止 Bonjour 后,一切正常。重新启动 Bonjour 会导致它选择不同的块,因此它不再干扰。它迫使我们修改应用程序的各种版本以允许备用 UDP 端口和 post 固件更新以更改端口,以防将来任何客户 运行 遇到此问题。同样,如果 OS 告诉我问题出在哪里,而不仅仅是 "unauthorized access"

,那就太好了