Якщо я хочу дізнатися, який процес прослуховує в якому сокеті, я можу скористатися netstat / TCPview і негайно побачу його. Однак прив’язати до адреси можна, не слухаючи. Якщо це зроблено, він не відображається в netstat / TCPview, але блокує сокет.
Приклад Python:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('0.0.0.0',12345))
Порт тепер зв'язаний, і спроба виконати той самий код у другій інстанції, поки перший все ще працює, призведе до помилки. Однак, якщо ви насправді не почнете слухати цей порт за допомогою
s.listen(1)
порт не відображається в netstat / TCPview.
Питання: Чи можна побачити, які порти пов'язані (але не слухають), і який процес їх зв'язує?
Фон цього є те , що я вже мав рухому діапазон 1976 портів , які не можуть бути пов'язані , і я хочу знати , що причини цього. Тим часом я через спроби та помилки встановив, що розділення підключення до Інтернету блокує ці порти, але мені все одно цікаво відповісти на це питання.
Редагувати: Через популярний запит, ось код, який я використовував для пошуку цих портів:
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"
(можливо, ви хочете передати вихідний файл grep і фільтрувати лише для FAIL)