Не могу получить UDP Windows RT
Я пишу приложение для Магазина Windows /Metro/Modern/RT для Windows 8/RT, которое должно получать UDP-пакеты через порт 49030, но я не могу получать какие-либо пакеты. Я следовал руководству по использованию DatagramSocket
на письмо, и я ничего не получаю. Я знаю, что моя программа отправителя отправляет данные, поскольку я вижу их на Wireshark. Я также написал тестовое консольное приложение C#, которое использует обычный API сокета BSD (System.Net.Sockets.Socket), который правильно получает данные по UDP.
Это код, который работает:
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()
точка останова никогда не достигается, и ничего не выводится в выходной журнал.
Я попытался запустить образец DatagramSocket, предложенный MSFT, и он не сработал (конечно). Я вижу, что сокет открывается / прослушивается, потому что он обнаруживается в resmon.exe. У меня также есть все надлежащие возможности, включенные в манифест для приложения. Я протестировал его на своем ноутбуке x86 и на Surface RT (удаленная отладка), и они оба демонстрируют одинаковое поведение.
Есть идеи, почему это не работает?