Bu portu hangi program kullanıyor?
Bir sunucu 8080 portunda başlamıyor ya da bir test "address already in use" ile duruyor. Ya portu zaten bir program tutuyor ya da Windows onu ayırmış, ve iki hata birbirine benziyor. Ayırt etmenin yolu şu.
Bir portun açılmamasının iki nedeni
| Ne oldu | Nasıl görünür | Ne yapmalı |
|---|---|---|
| Bir program portu tutuyor | Hata, adresin zaten kullanımda olduğunu söyler (EADDRINUSE veya Windows hatası 10048). Program soket listesinde görünür. | O programı kapatın ya da başka bir port seçin. |
| Windows portu ayırmış | Hata, erişimin yasak olduğunu söyler (Windows hatası 10013), oysa hiçbir şey dinlemiyordur. Listede hiçbir program görünmez. | Ayrılmış aralığın dışında bir port seçin ya da aralığı serbest bırakın. WinNAT hizmetini yeniden başlatmak çoğu zaman yeter. |
Windows'ta zaten olanla
Soket listesi sahibini bir işlem kimliği olarak verir. Önce portu, sonra kimliği arayın:
netstat -ano | findstr :8080
tasklist /fi "PID eq 4321"
Aynısı PowerShell'de, TCP ve UDP için:
Get-NetTCPConnection -LocalPort 8080 | Select-Object LocalAddress, State, OwningProcess
Get-NetUDPEndpoint -LocalPort 5353 | Select-Object LocalAddress, OwningProcess
Get-Process -Id 4321
Portu hiçbir program tutmuyorsa, Windows'un hangi aralıkları ayırdığını sorun:
netsh int ipv4 show excludedportrange protocol=tcp
Komutu protocol=udp ile yeniden çalıştırın. Aralıklar protokol başına tutulur, bu yüzden bir port UDP için boş, TCP için ayrılmış olabilir.
Tools sekmesiyle
Tools sekmesi aynı soruları konsol olmadan yanıtlar:
- Sockets bilgisayardaki her TCP ve UDP soketini
netstat -anogibi listeler: neyin dinlediğini, neyin bağlı olduğunu, durumunu ve sahibi olan programı. Oturum gerekmez.lport:8080veyastate:listenile arayın. - Port check, sunucunuzun sorduğunu sorar: bir program bu portu kullanabilir mi? 8080 yazın,
80, 443gibi bir liste ya da9000-9100gibi bir aralık girin (en fazla 1000 port) ve Check düğmesine basın. Her port TCP ve UDP için, IPv4 ve IPv6 üzerinde denenir ve Free, In use (program ve PID ile) ya da Reserved by Windows olarak işaretlenir.
Bu yüzden yanıt evet ya da hayır değil, bir tablodur: Windows aralıkları protokol başına ayırır ve IPv6'da dinleyen bir program, IPv4'te boş olan bir portu tutabilir.
Ağ üzerinden hiçbir şey gönderilmez. Araç her port için onu bilgisayarın kendi geri döngü adresinde Windows'tan ister ve hemen geri verir.
Kimin tuttuğunu öğrendikten sonra
Portu tutan programı hedef yapmak için iki tablodan birinde bir satıra sağ tıklayın. Bu yalnızca hedef alanını doldurur ve START düğmesine basana kadar hiçbir şey değişmez. Sonrası tek bir uygulamayı hedefle sayfasında.
Ne yapmaz
Okur, onarmaz: hiçbir programı kapatmaz ve ayrılmış bir aralığı serbest bırakmaz. Başka bir hesaba ait bir soket, araç yönetici olarak çalışmadıkça program göstermez.