sockets - 在 UWP 应用中接收 UDP 数据报需要做什么?
问题描述
在我的 UWP 的 Xamarin.Forms 应用程序中,我有以下简单的代码来接收 UDP 数据报:
using (var udpClient = new UdpClient(port))
{
var datagram = await udpClient.ReceiveAsync();
}
出于测试目的,我需要从 Visual Studio 中运行此应用程序,并使用某些(非 UWP)终端程序从同一台计算机向应用程序发送数据报。但它不起作用 -ReceiveAsync()
永远不会返回。
我知道 UWP 默认禁止环回通信,但是根据https://stackoverflow.com/a/44990978/487356进行调试应该是可能的。
在 UWP 项目中,我启用了“Internet (Client)”、“Internet (Client & Server)”和“Private Networks (Client & Server)”功能。我还在调试设置中启用了“允许本地网络环回”。并且使用 CheckNetIsolation 工具,我能够验证我的应用程序是否列在 LoopbackExempt 下。所以这一切看起来都不错,但我仍然无法接收任何 UDP 数据报。
我还需要做些什么才能使其正常工作吗?
编辑 阅读更多关于此的信息,即使应用程序列在 LoopbackExempts 下,似乎也禁止从同一台计算机接收数据,请参阅Windows 10 中的 UDP 问题。 UWP。这真的很烦人!
所以我想接下来的问题是:什么是 IPC 的一个好的(最好是无连接的)替代方案?
解决方案
出于测试目的,我需要从 Visual Studio 中运行此应用程序,并使用某些(非 UWP)终端程序从同一台计算机向应用程序发送数据报。但它不起作用 - ReceiveAsync() 永远不会返回。
如果这只是为了测试目的,您可以使用 CheckNetIsolation 工具临时启用从同一台机器接收连接:
CheckNetIsolation.exe LoopbackExempt -is -n=<AppContainer or Package Family>
但是,如此处所述,该工具必须以管理员身份持续运行。我们使用这种机制对我们的代码进行单元测试,并且效果很好。
推荐阅读
- python - Azure 部署重定向(登录无效。请重试。)
- javascript - 我无法使用笔记本电脑访问我的堆栈溢出帐户
- r - 嵌套列表的 R 和双括号
- android - 找不到变量:符号来自
(仅在 Physical React Native Android 设备上) - node.js - Heroku 应用程序总是从前端调用本地主机
- php - 如何使用 Laravel Eloquent 从两个表中获取数据(专辑和曲目)
- ruby-on-rails - 使用 check_box_tag 时,rails 复选框切换按钮
- system-calls - 为什么未设置 mmap 系统调用标志
- google-apps-script - 如何通过谷歌脚本提取名为范围列号的谷歌工作表?
- python - 如何检查一个或多个特定字符是否为字符串?