在 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"
,那就太好了
我有一个最初是为 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"
,那就太好了