어떤 프로세스가 어떤 소켓에서 수신 대기 중인지 알아 보려면 netstat / TCPview를 사용하면 즉시 볼 수 있습니다. 그러나 수신하지 않고 주소에 바인딩 할 수 있습니다. 이 작업이 완료되면 netstat / TCPview에 나타나지 않지만 소켓을 차단합니다.
파이썬 예제 :
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 전용으로 필터링 할 수 있습니다)