Как узнать номер порта любого ПК? - PullRequest
1 голос
/ 14 декабря 2011

В настоящее время я работаю над реализацией TCP клиент / сервер в C. В этом я обнаружил, что могу указать любое случайное число в качестве номера порта для моего ПК. Это правильная процедура? Или есть какой-нибудь стандартный номер порта для моего ПК?

Ответы [ 3 ]

2 голосов
/ 14 декабря 2011

В принципе, вы можете использовать любой порт (при наличии достаточных прав доступа). Но сервер и клиент должны согласовать в отношении порта, и он не должен уже использоваться другим приложением.

Следовательно, многие порты уже зарезервированы для специальных приложений. 80 для HTTP, 22 для SSH и так далее. Файл /etc/services дает более подробную информацию.

Номера портов 0-1023 называются Хорошо известные порты , номера 1024-49151 называются Зарегистрированные порты (не все из них, но вы понимаете).

2 голосов
/ 14 декабря 2011

Я не знаю стандарт, но я говорю, что нет. По крайней мере, мне не нравится так делать.

Вы можете проверить занятые порты, анализируя выходные данные программ, подобных netstat, и избегать их использования. Вы также можете использовать метод, который пытается подключиться к одному порту, а при сбое пытается использовать другой порт. Если вам действительно не повезло, вы должны получить действительный порт со второй попытки.

Вы должны использовать порты в диапазонах 49152–65535. Порты ниже 49152 зарезервированы / зарегистрированы.

1 голос
/ 14 декабря 2011

Если ваш вопрос заключается в том, можете ли вы дать какой-либо номер порта для прослушивания вашего сервера, то вы ошибаетесь, номера портов TCP / IP ниже 1024 являются особенными в том смысле, что обычные пользователи не могут запускать серверы на них, выможет использовать непривилегированные порты (порты> 1024).просто убедитесь, что любое другое приложение еще не использует этот порт (выше 1024) с помощью netstat

...