Если я хочу выяснить, какой процесс прослушивает какой сокет, я могу использовать 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)