Który program używa tego portu?
Serwer nie startuje na porcie 8080 albo test kończy się komunikatem "address already in use". Port zajmuje już jakiś program albo Windows odłożył go na bok, a oba błędy wyglądają podobnie. Oto jak je odróżnić.
Dwa powody, dla których port się nie otwiera
| Co się stało | Jak to wygląda | Co zrobić |
|---|---|---|
| Port zajmuje program | Błąd mówi, że adres jest już używany (EADDRINUSE albo błąd Windows 10048). Program widać na liście gniazd. | Zamknij ten program albo wybierz inny port. |
| Windows zarezerwował port | Błąd mówi, że dostęp jest zabroniony (błąd Windows 10013), choć nic nie nasłuchuje. Na liście nie ma żadnego programu. | Wybierz port spoza zarezerwowanego zakresu albo zwolnij zakres. Często pomaga restart usługi WinNAT. |
Tym, co Windows już ma
Lista gniazd podaje właściciela jako identyfikator procesu. Znajdź port, a potem sprawdź identyfikator:
netstat -ano | findstr :8080
tasklist /fi "PID eq 4321"
To samo w PowerShellu, dla TCP i dla UDP:
Get-NetTCPConnection -LocalPort 8080 | Select-Object LocalAddress, State, OwningProcess
Get-NetUDPEndpoint -LocalPort 5353 | Select-Object LocalAddress, OwningProcess
Get-Process -Id 4321
Jeśli żaden program nie trzyma portu, zapytaj, które zakresy Windows odłożył na bok:
netsh int ipv4 show excludedportrange protocol=tcp
Uruchom to jeszcze raz z protocol=udp. Zakresy są prowadzone osobno dla każdego protokołu, więc port może być wolny dla UDP, a zarezerwowany dla TCP.
Za pomocą zakładki Narzędzia
Zakładka Narzędzia odpowiada na te same pytania bez konsoli:
- Gniazda wylicza każde gniazdo TCP i UDP na komputerze, jak
netstat -ano: co nasłuchuje, co jest połączone, w jakim jest stanie i który program je ma. Nie potrzebuje sesji. Szukaj w niej przezlport:8080albostate:listen. - Czy port wolny pyta o to, o co zapytał Twój serwer: czy program może użyć tego portu? Wpisz 8080, listę, np.
80, 443, albo zakres, np.9000-9100(do 1000 portów), i naciśnij Sprawdź. Każdy port jest sprawdzany dla TCP i UDP, w IPv4 i IPv6, i oznaczany jako Wolny, Zajęty (z programem i jego PID) albo Zarezerwowany przez Windows.
Dlatego odpowiedzią jest tabela, a nie tak lub nie: Windows rezerwuje zakresy osobno dla każdego protokołu, a program nasłuchujący na IPv6 może trzymać port, który w IPv4 jest wolny.
Nic nie jest wysyłane przez sieć. Dla każdego portu narzędzie prosi Windows o niego na własnym adresie pętli zwrotnej komputera i od razu go oddaje.
Gdy wiesz, kto go ma
Kliknij wiersz w którejkolwiek tabeli prawym przyciskiem, aby wskazać program, który trzyma port. To tylko wypełnia pole celu, a nic się nie zmienia, dopóki nie naciśniesz START. Co dalej, opisuje celowanie w jedną aplikację.
Czego nie robi
Czyta, nie naprawia: nigdy nie zamyka programu ani nie zwalnia zarezerwowanego zakresu. Gniazdo należące do innego konta nie pokazuje programu, chyba że narzędzie działa jako administrator.