2017-12-25 3 views
0

"을 요청 주소를 할당 할 수 없습니다"HTTP 서버 : 나는 다음과 같은 오류가</p> <pre><code>from http.server import HTTPServer, SimpleHTTPRequestHandler s = HTTPServer(('localhost', 0), SimpleHTTPRequestHandler) </code></pre> <p>: 파이썬 아래 127.0.0.1 대 로컬 호스트에 3 코드를 가진

Traceback (most recent call last): 
    File "repro.py", line 2, in <module> 
    s = HTTPServer(('localhost', 0), SimpleHTTPRequestHandler) 
    File "/usr/lib/python3.6/socketserver.py", line 453, in __init__ 
    self.server_bind() 
    File "/usr/lib/python3.6/http/server.py", line 136, in server_bind 
    socketserver.TCPServer.server_bind(self) 
    File "/usr/lib/python3.6/socketserver.py", line 467, in server_bind 
    self.socket.bind(self.server_address) 
OSError: [Errno 99] Cannot assign requested address 

내가 발견 한 그 3 다음과 같은 상황이 발생하지 않도록하십시오.

  1. WiFi 사용 중지.
  2. 다른 무선 네트워크로 전환합니다 (내 집 라우터에서 내 전화로 테 더링하는 것까지).
  3. 코드에서 'localhost''127.0.0.1'으로 변경하십시오.

내 질문은 무엇이 잘못 되었습니까? 왜이 코드가 실패합니까?

P. Here is ip a's output when connected to my home routerhere's its output when tethering.

+0

다른 사용 가능한 포트를 사용해 보셨습니까? 포트 0은 [여기] (https://en.wikipedia.org/wiki/Registered_port)에 설명 된대로 시스템 또는 잘 알려진 포트입니다. –

+0

'localhost'에서'127.0.0.1'로 변경하면 DNS 문제처럼 들립니다. 'dig localhost'는 무엇을 보여줍니까? – Barmar

+0

'ip a'출력에 중요한 비트, 즉 인터페이스 'lo'가 없습니다. 이 정보를 추가하십시오. –

답변

0

나는 0 포트에서들을 수 없다고 생각한다. 노드 js 및 SocketTest에서 시도했습니다. 그들은 포트에 연결하고/할 수 없습니다. 그것의 의미는 할 수 있고 둘 다 할 수 있습니다.
이 링크가 도움이
https://unix.stackexchange.com/questions/180492/is-it-possible-to-connect-to-tcp-port-0
https://docs.python.org/2/library/simplehttpserver.html

+0

나는 왜이 대답이 downvoted인지 이해할 수 없다, 그것은 정확한 것이다. 일반적으로 포트 0에서 수신 대기 할 수 없습니다. 루트로 파이썬 스 니펫을 실행하지 않는 한 1024 이하의 포트는 바인드 할 수 없습니다. 따라서 시도해야합니다. s = HTTPServer (('localhost ', 8080), SimpleHTTPRequestHandler) – opentokix

+0

@opentokix'('localhost ', 0)'을 사용하면 임의의 열린 비 권한 포트를 할당 할 수 있습니다. –

0

나는 문제가 내 홈 무선 네트워크에서 DNS 서비스가 로컬 호스트에 대한 올바른 정보를 반환하지 않은이 있다고 생각 할 수있다. 나는 주소를 127.0.0.1으로 하드 코딩함으로써이 문제를 해결했다.

관련 문제