2017-10-29 1 views
3

자신의 이름과 포트를 출력 :파이썬 나는 다음과 같은 코드가 2.7 Python으로 작성한

#...import stuff 

remoteServer = raw_input("Enter a remote host to scan: ") 
remoteServerIP = socket.gethostbyname(remoteServer) 

print "Please wait, scanning remote Host", remoteServerIP 

try: 
    for port in xrange(1, 1024): 
     sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
     result = sock.connect_ex((remoteServerIP, port)) 
     if result == 0: 
      print "port {}: open".format(port) 
     sock.close 

except KeyboardInterrupt: 
    print "\nexiting..." 
    sys.exit() 

출력 :

Enter a remote host to scan: www.myexamplesite.com 
Please wait, scanning remote Host xxx.xxx.xx.xx 
port 21: open 
port 22: open 
... 

그러나 문제는 내가 또한 포트를 알고 싶어한다는 것입니다 사용 및 대한 그들은 단지처럼 사용할 무엇 :

#... as usual 
port 1 httpserver 
port 2 chat server 
... 

하지만이 포트는 1에서 1024로만 인쇄됩니다. 이 기능/방법은 무엇입니까?

+0

IANA는 _ [서비스 이름 및 전송 프로토콜 포트 번호 레지스트리] (https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml) _, 그렇다고해서 응용 프로그램이 비표준 방식으로 포트를 사용하지 않는다고 보장 할 수는 없습니다. 예를 들어, 호스트가 완전히 다른 것으로 표준 HTTP 포트 80을 사용할 수 있습니다. –

답변

2

socket.getservbyport()은 (/etc/services를 통해) 해당 포트에서 실행되고 예상되는 서비스 에 포트 번호를 번역하지만, 실제로 정말 실행되고 있는지 확인하기 위해 포트를 통해 통신하지 않습니다.

+0

하지만 대부분의 서버가 똑같은 포트를 똑같이 사용한다고 생각합니까? – fipsi

관련 문제