Какая программа использует этот порт?
Сервер не запускается на порту 8080, или тест останавливается с "address already in use". Либо порт уже занят программой, либо его зарезервировал Windows, а ошибки выглядят похоже. Вот как их различить.
Две причины, по которым порт не открывается
| Что произошло | Как это проявляется | Что делать |
|---|---|---|
| Порт занят программой | Ошибка сообщает, что адрес уже используется (EADDRINUSE или ошибка Windows 10048). Программа видна в списке сокетов. | Закройте эту программу или выберите другой порт. |
| Порт зарезервировал Windows | Ошибка сообщает, что доступ запрещён (ошибка Windows 10013), хотя никто не слушает. В списке нет ни одной программы. | Выберите порт вне зарезервированного диапазона или освободите диапазон. Часто помогает перезапуск службы WinNAT. |
Средствами самой Windows
Список сокетов указывает владельца как идентификатор процесса. Найдите порт, а затем идентификатор:
netstat -ano | findstr :8080
tasklist /fi "PID eq 4321"
То же самое в PowerShell, для TCP и для UDP:
Get-NetTCPConnection -LocalPort 8080 | Select-Object LocalAddress, State, OwningProcess
Get-NetUDPEndpoint -LocalPort 5353 | Select-Object LocalAddress, OwningProcess
Get-Process -Id 4321
Если порт не держит ни одна программа, спросите, какие диапазоны Windows отложила:
netsh int ipv4 show excludedportrange protocol=tcp
Запустите ещё раз с protocol=udp. Диапазоны ведутся отдельно для каждого протокола, поэтому порт может быть свободен для UDP и зарезервирован для TCP.
Во вкладке Tools
Вкладка Tools отвечает на те же вопросы без консоли:
- Sockets перечисляет все сокеты TCP и UDP на компьютере, как
netstat -ano: что слушает, что соединено, в каком состоянии и какой программе принадлежит. Сеанс для этого не нужен. Искать можно черезlport:8080илиstate:listen. - Port check задаёт тот же вопрос, что и ваш сервер: может ли программа использовать этот порт? Введите 8080, список вроде
80, 443или диапазон вроде9000-9100(до 1000 портов) и нажмите Check. Каждый порт проверяется для TCP и UDP, в IPv4 и IPv6, и помечается как Free, In use (с программой и её PID) или Reserved by Windows.
Поэтому ответ - таблица, а не "да" или "нет": Windows резервирует диапазоны отдельно для каждого протокола, а программа, слушающая в IPv6, может держать порт, свободный в IPv4.
Ничего не отправляется по сети. Для каждого порта программа запрашивает его у Windows на собственном адресе обратной петли компьютера и тут же возвращает.
Когда вы знаете, кто его держит
Щёлкните строку в любой из таблиц правой кнопкой, чтобы выбрать целью программу, которая держит порт. Это лишь заполнит поле цели, и ничего не изменится, пока вы не нажмёте START. Что делать дальше, описано в разделе одно приложение.
Чего она не делает
Она читает, а не чинит: никогда не закрывает программу и не освобождает зарезервированный диапазон. Сокет другой учётной записи не показывает программу, если инструмент не запущен от имени администратора.