我无法从我的Wi-Fi连接手机上的UWP应用程序向台式机上的监听器发送UDP消息。
手机上的UWP应用必须将数据发送到网络上其他位置的进程。
我可以远程调试手机上运行的应用。它执行WriteString调用没有发生意外,但Wireshark没有报告应该生成的UDP流量。
以下是问题代码的示例。为简单起见,监听器的IP地址是硬编码的,并且在测试时已知是正确的。电话在网络上,并在测试前立即响应ping命令192.168.1.10。
DatagramSocket _ds = new DatagramSocket();
HostName _hostname = new HostName("192.168.1.3");
private async void Grid_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
{
using (var w = new DataWriter(await _ds.GetOutputStreamAsync(_hostname, "1967")))
w.WriteString("CC");
Debug.WriteLine("CC");
}
彼得托尔的回答和我对此的评论为本附录提供了背景信息。
有人可能想知道为什么任何理智的人都会像小数据报那样围绕一个小的有效载荷一次性包装。经过几天的愚蠢讨论这是多么愚蠢,最后我突然意识到它迫使我以一种不会对传输做出假设的方式编写我的代码:我可以在几乎没有代码工作或后果的情况下切换到TCP。
甚至可能需要这样做以支持网络约束和方便的管理(客户反馈)。所以看起来像一个简单事物的任意复杂化实际上是一个非常精明的设计。