Wenn ich herausfinden will, welcher Prozess auf welchem Socket lauscht , kann ich netstat / TCPview verwenden und sehe es sofort. Es ist jedoch möglich, eine Verbindung zu einer Adresse herzustellen, ohne sie abzuhören. In diesem Fall wird es nicht in netstat / TCPview angezeigt, sondern blockiert den Socket.
Python-Beispiel:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('0.0.0.0',12345))
Der Port ist jetzt gebunden, und der Versuch, denselben Code in einer zweiten Instanz auszuführen, während die erste noch ausgeführt wird, führt zu einem Fehler. Es sei denn, Sie lauschen tatsächlich über diesen Port
s.listen(1)
Der Port wird in netstat / TCPview nicht angezeigt.
Die Frage ist: Ist es möglich zu sehen, welche Ports gebunden sind (aber nicht abhören) und welcher Prozess sie bindet?
Der Hintergrund dafür ist , dass ich habe einen hatte Bewegungsbereich von 1976 Ports , die nicht gebunden werden können , und ich möchte wissen , was dies verursacht. In der Zwischenzeit habe ich durch Ausprobieren festgestellt, dass die gemeinsame Nutzung der Internetverbindung diese Ports blockiert, bin aber immer noch neugierig auf die Antwort auf diese Frage.
Bearbeiten: Auf vielfachen Wunsch ist hier der Code, mit dem ich diese Ports gefunden habe:
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"
(Möglicherweise möchten Sie die Ausgabe an grep leiten und nur nach FAIL filtern.)