どのプロセスがどのソケットをリッスンしているかを知りたい場合は、netstat / TCPviewを使用するとすぐに表示されます。ただし、リッスンせずにアドレスにバインドすることは可能です。これを行うと、netstat / TCPviewには表示されませんが、ソケットはブロックされます。
Pythonの例:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('0.0.0.0',12345))
これでポートがバインドされ、2番目のインスタンスがまだ実行されている間に2番目のインスタンスで同じコードを実行しようとすると、エラーが発生します。ただし、実際にそのポートでリッスンを開始しない限り、
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のみをフィルターすることができます)