Как получить список свободных номеров портов в VC ++? - PullRequest
2 голосов
/ 15 декабря 2009

Как получить список свободных номеров портов в VC ++?

А также я хочу проверить, является ли пользователь, определяющий номер порта, свободным или нет?

Ответы [ 2 ]

2 голосов
/ 15 декабря 2009

Единственный способ узнать наверняка, является ли номер порта «свободным», состоит в том, чтобы фактически попытаться bind() к нему.

Напомним, что номер порта означает что-то только в контексте определенного адреса интерфейса, поэтому две программы могут прослушивать «один и тот же» номер порта (но по разным адресам). Кроме того, может быть любое количество причин, по которым конкретной программе может быть запрещено слушать определенный порт, включая локальные политики брандмауэра или списки ACL, или любая другая возможная причина.

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

1 голос
/ 15 декабря 2009

(я полагаю, вы говорите о портах TCP / IP)

Нет такого списка свободных номеров портов. Но такие утилиты, как netstat.exe (мне нравится использовать netstat /a /n /p tcp), дают список номеров используемых портов. Все свободные номера портов - это номера портов от 1 до 65535 включительно, которые не используются.

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

Обновление:

(из Википедии) http://en.wikipedia.org/wiki/Netstat:

На платформе Windows информацию netstat можно получить, вызвав функции GetTcpTable и GetUdpTable в IP Helper API или IPHLPAPI.DLL. Возвращаемая информация включает в себя локальные и удаленные IP-адреса, локальные и удаленные порты и (для GetTcpTable) коды состояния TCP. В дополнение к инструменту командной строки netstat.exe, поставляемому с Windows, доступны программы netstat на основе графического интерфейса.

В этой статье в Википедии есть и другая полезная информация. Хорошее объяснение возвращенных стати также здесь: http://commandwindows.com/netstat.htm.

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