Выбор порта для локального создания IPEndPoint. Имеет ли значение номер порта?

Я впервые работаю с IPEndPoint, так что извините за недостаток опыта.

Если я создаю IPEndPoint, как это:

IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Parse("192.168.1.25"), 0);

Возможно ли, что порт 0 уже будет использоваться, так что это приведет к исключению? Есть ли здесь какой-либо тип соглашения, какой номер локального порта использовать? Должен ли я просто использовать случайно сгенерированное число, которое меньше 65 536? Есть ли лучший или самый безопасный подход к выбору порта и имеет ли это значение?

Вариант использования в данном конкретном случае просто для меня, чтобы узнать больше. Сейчас я возиться с отправкой пакетов WOL с широковещательной рассылкой UDP, но позже я рассчитываю получить немного более сложный код. Я просто хочу убедиться, что понимаю передовую практику.

2 ответа

Решение

По данным IANA

Номера портов назначаются различными способами на основе трех диапазонов: системные порты (0-1023), пользовательские порты (1024-49151) и динамические и / или частные порты (49152-65535); Различия в использовании этих диапазонов описаны в [RFC6335]. Системные порты назначаются процессом IETF для протоколов отслеживания стандартов согласно [RFC6335]. Пользовательские порты назначаются IANA с использованием процесса "Проверка IETF", процесса "Утверждение IESG" или "Проверка эксперта" в соответствии с [RFC6335]. Динамические порты не назначены.

Также из документации по MSDN UdpClient (порт) ctor:

Если вы передадите 0 конструктору, основной поставщик услуг назначит номер порта.

Во-первых, вы хотите проверить, не мешаете ли вы каким-либо стандартным портам службы Windows.

Случайный случай в этом случае был бы очень плохим путем, порт может использоваться другим приложением.

Но вы всегда можете пойти сюда и выбрать то, что не назначено.

Там говорится, что IANA

Динамические и / или частные порты с 49152 по 65535

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