Яка програма використовує цей порт?
Сервер не запускається на порту 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. Що робити далі, описано в розділі одна програма.
Чого вона не робить
Вона читає, а не лагодить: ніколи не закриває програму і не звільняє зарезервований діапазон. Сокет іншого облікового запису не показує програму, якщо інструмент не запущено від імені адміністратора.