2014-09-30 4 views
1

내가 ... 내 공개 IP에 파이썬 서버를 만들기 위해파이썬 - 파이썬에

import socket 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

s.bind(("Public IP", 80)) 
s.listen(5) 
conn, addr = s.accept() 

을 싶습니다하지만 바인드 명령을 명중하면 공공 인터넷 프로토콜에 소켓 서버를 확인

error: [Errno 10049] The requested address is not valid in its context 

어떻게하면이 문제를 해결할 수 있을까요? 지구상의 다른 사람들이 내 파이썬 서버에 연결하게하려면 어떻게해야할까요?

+0

이 코드를 루트로 실행 하시겠습니까? 포트 80은 권한이 있으며 하나는 수퍼 유저 액세스로 바인드해야합니다. 1024보다 큰 포트 번호에서 동일한 코드를 실행하면 어떻게됩니까? 's.bind (('', 80))를 해보 시지 않겠습니까? 그러면 프로그램에서 연결을 수락하게됩니다. _everywhere_ – linuxfan

+0

"공용 IP"가 의미하는 바를 정확히 말하십시오. –

+0

IP는 공용 IP 인 http://www.whatismyip.com/에서 가져온 것이므로 포트 80의 파이썬 소켓을 통해 연결할 수 있습니다. – lolakshooter

답변

1

로컬 컴퓨터의 인터페이스에 구성된 주소에만 바인딩 할 수 있습니다. "공용 IP"라는 문구를 사용하고 있으므로 공개 IP가 라우터에만 구성되어 있고 컴퓨터에 로컬 네트워크의 개인 주소가 있다고 가정합니다.

프로그램을 기기의 로컬 IP 또는 사용 가능한 모든 IP (예 : ("", 80))에 바인딩 한 다음 라우터에서 포트 전달을 적절하게 구성하십시오.

+0

네, 고마워요. 공개 IP를 의미 할 때 웹 사이트 및 웹 사이트 기록에 연결하는 데 사용하는 IP를 의미합니다. http://support.center.verio.com/KB/questions.php?questionid=655 – lolakshooter