Jeśli chcę dowiedzieć się, jaki proces nasłuchuje na jakim gnieździe, mogę użyć netstat / TCPview i natychmiast go zobaczę. Możliwe jest jednak powiązanie z adresem bez odsłuchiwania. Jeśli to zrobisz, nie pojawi się w netstat / TCPview, ale zablokuje gniazdo.
Przykład w języku Python:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('0.0.0.0',12345))
Port jest teraz powiązany, a próba wykonania tego samego kodu w drugiej instancji, gdy pierwsza jest nadal uruchomiona, spowoduje błąd. Jednak dopóki nie zaczniesz nasłuchiwać na tym porcie za pomocą
s.listen(1)
port nie pojawia się w netstat / TCPview.
Pytanie brzmi: czy można zobaczyć, które porty są powiązane (ale nie nasłuchują) i który proces je wiąże?
Tłem tego jest to, że miałem ruchomy zakres portów z 1976 r., Których nie można związać , i chcę wiedzieć, co to powoduje. W międzyczasie ustaliłem metodą prób i błędów, że Udostępnianie połączenia internetowego blokuje te porty, ale nadal jestem ciekawy odpowiedzi na to pytanie.
Edycja: Z powodu popularnego żądania, oto kod, którego użyłem do znalezienia tych portów:
import time
import socket
for i in range(0,65536):
try:
print "Listening on port", i, '...',
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind(('0.0.0.0', i))
serversocket.listen(5)
#time.sleep(0.1)
serversocket.close()
print "ok"
except:
print "FAIL"
(możesz przesłać dane wyjściowe do grep i filtrować tylko dla FAIL)