Доступ к более высоким портам UDP в Windows UWP - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть приложение, которое изначально было написано для Win8 Modern. Я использую UDP для связи с внешним оборудованием через порт 54372.

Я перенес его на Android и iOS и теперь хочу перенести его обратно на UWP. Когда я пытался получить доступ к порту в моем приложении UWP, я получаю неизвестную ошибку. Я попробовал как оригинальный метод DatagramSocket из моего Modern App, так и метод System. Net .Sockets.UdpClient из Android и iOS Apps.

Затем я попытался запустить образец DatagramSocket от Microsoft https://docs.microsoft.com/en-us/samples/microsoft/windows-universal-samples/datagramsocket/

Если я использую их сервис по умолчанию, никаких проблем. Если я изменяю его на 54372, я получаю сообщение об ошибке:

System.Runtime.InteropServices.COMException: «Была сделана попытка получить доступ к сокету способом, запрещенным его правами доступа.

Теперь кажется, что код в порядке, просто MS теперь накладывает ограничения на то, какие порты я могу использовать.

Какие изменения мне нужно применить к разрешениям, чтобы мое приложение могло получить доступ к этому порту? Аппаратное обеспечение является коммерческим продуктом, которое используется в этой области в течение последних 9 лет, поэтому изменение порта не вариант.

Спасибо, Дэн

1 Ответ

1 голос
/ 13 февраля 2020

Я нашел проблему. Похоже, это сервис Bonjour от Apple. Скорее, просто «взяв» один UDP-порт, который ему был нужен, он выделил блок из 100. Просто мне повезло, что мой порт по умолчанию был в середине этого блока. После остановки Bonjour все работает нормально. Перезапуск Bonjour заставил его выбрать другой блок, чтобы он больше не мешал. Это заставило нас изменить различные версии приложения, чтобы разрешить использование альтернативных портов UDP, и опубликовать обновление прошивки для изменения портов на случай, если какие-либо клиенты столкнутся с этой проблемой в будущем. Опять же, было бы неплохо, если бы ОС рассказала мне, в чем проблема, а не просто «несанкционированный доступ»

...