无法接收UDP Windows RT

时间:2013-03-07 19:00:27

标签: c# windows-8 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示例,但它没有问题(当然)。我可以看到socket 被打开/收听,因为它出现在resmon.exe中。我还在应用程序的清单中启用了所有适当的功能。我已经在我的x86笔记本电脑和Surface RT(远程调试)上进行了测试,它们都表现出相同的行为。

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

0 个答案:

没有答案