无法接收UDP Windows RT

我正在为Windows 8 / RT编写一个Windows Store / Metro / Modern / RT应用程序,它需要在端口49030上接收UDP数据包,但我似乎无法接收任何数据包。 我已经按照教程使用DatagramSocket来写信了,我什么也没得到。 我知道我的发送程序正在发送数据,因为我可以在wireshark上看到它。 我还编写了一个测试C#控制台应用程序,它使用通过UDP正确接收数据的常规BSD套接字API(System.Net.Sockets.Socket)。

这是有效的代码:

 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); s.Bind(new IPEndPoint(IPAddress.Any, 49030)); byte[] buf = new byte[5000]; while (true) { Console.WriteLine("Received " + s.Receive(buf) + " bytes."); } 

这将输出报告正在发送的字节数的行,如预期的那样。

我的RT应用程序代码:

 public async void StartListening() { DatagramSocket s = new DatagramSocket(); s.MessageReceived += s_MessageReceived; await s.BindServiceNameAsync(this._port.ToString()); } void s_MessageReceived(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs e) { System.Diagnostics.Debug.WriteLine("Hark! A packet!"); // Breakpoint here } 

在调用StartListening() ,永远不会命中断点,并且不会向输出日志打印任何内容。

我尝试运行MSFT提供的DatagramSocket示例,但它没有问题(当然)。 我可以看到套接字正在打开/侦听,因为它显示在resmon.exe中。 我还在应用程序的清单中启用了所有适当的function。 我在我的x86笔记本电脑和Surface RT(远程调试)上进行了测试,它们都表现出相同的行为。

关于它为什么不起作用的任何想法?