Не могу получить 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 (удаленная отладка), и они оба демонстрируют одинаковое поведение.

Есть идеи, почему это не работает?

0 ответов

Другие вопросы по тегам