ОС: Windows Server 2003
Есть ли какой-нибудь инструмент, который может проверить, доступен ли определенный порт для прослушивания моей программы? Спасибо.
Для Windows: netstat покажет вам существующие номера портов - просто выберите тот, который не используется.
Чтобы узнать, какие порты прослушиваются на машине, запустите Nmap.
Чтобы убедиться, что ваша программа получает ввод правильно, подключитесь к этому порту по telnet, а затем введите данные и посмотрите, получает ли их ваша программа.
Я думаю, что общая идея обычно заключается в том, что ваша программа должна попытаться выполнить привязку к порту с помощью функции, а затем вы должны проверить возвращаемое значение, чтобы убедиться, что привязка прошла успешно. В случае неудачи вы ошибаетесь. Это исходит из точки зрения * nix, но мне показалось, что это довольно универсально.
Причина, по которой я считаю его универсальным, заключается в том, что в идеале проверочный порт и привязка к порту должны быть атомарными. Это в данном случае означает, что никакая другая программа не имеет шанса использовать порт в период между проверкой и выделением порта. В случае, если вы сначала используете что-то вроде netstat, возможно, между вашей проверкой и попыткой использовать порт что-то еще будет использовать его.
Возможно, вы захотите сначала узнать о возможных конфликтах портов, проверив список наиболее часто используемых портов: http://www.iana.org/assignments/port-numbers
Вы также можете увидеть, какие порты прослушиваются в данный момент, используя netstat, как сказал @robert. :http://www.petri.co.il/quickly_find_local_open_ports.htm
Вы можете проверить, доступен ли порт извне, используя один из нескольких онлайн-сканеров портов: http://www.canyouseeme.org/
И наконец, убедитесь, что порт не заблокирован: http://support.microsoft.com/kb/816792