2011-11-07 7 views
17

나는 코드에서 연결하기 위해 ip를 지정하는 동안 작동하는 작은 일방 통보 발신자가 있지만, 소켓에서 모든 IP의 연결을 허용하도록하는 데 문제가 있습니다. 여기에 문제가되는 선이 있습니다.파이썬 소켓은 어떤 IP에 바인드합니까?

mySocket = socket.socket (socket.AF_INET, socket.SOCK_STREAM) 
mySocket.bind (('', 2727)) 

''localhost를위한, 그리고 내가 수동으로 IP를 입력하면, 예를 들어 192.168.1.106는하지만, 내가 어떻게 그것이 모두에게 열려 남길 수 있습니다 작동? 또는이 연결 유형을 잘못 사용하고 있습니까?

답변

28

사용 가능한 모든 IPv4 주소에 바인딩하려면 IP 주소로 0.0.0.0을 지정하십시오. 라우터를 사용하고 있고 LAN에서 사용할 수있는 것이 아니라 인터넷에 액세스 할 수있는 소켓을 원할 경우 LAN 외부 사용자가 서비스에 액세스 할 수 있도록 포트 전달 규칙을 설정해야합니다.

0.0.0.0에 대한 추가 정보를 원하시면 다음에 Serverfault 질문을 참조하십시오 : https://serverfault.com/questions/78048/whats-the-difference-between-ip-address-0-0-0-0-and-127-0-0-1

+0

감사합니다. – Trent

+0

매우 명확한 가이드! –

+0

152.64.87.9와 같이 완전히 사용자 정의 된 ips에 바인드 할 수 있습니까? – CMCDragonkai

4

이 0.0.0.0으로 바인딩하는 것은 그것으로 운항 할 수있는 IPv4 주소의 연결을 허용 할 수 있습니다.

9

''에 바인딩하면 '0.0.0.0'과 동일한 효과가있어 IPv6로 쉽게 전환 할 수 있습니다.

OS에 따라 socket.AF_INET6 소켓을 열면 IPv4 및 IPv6 수신 대기합니다.

관련 문제