2010-07-15 2 views
1

우분투와 함께 제공되는 주식 Python 2.6.5를 실행하는 우분투 10.04를 실행하는 노트북과 데스크탑이 있습니다. 노트북에 socket.getaddrinfo가 한 시스템에서 실패합니다. 분명히 다른 동일한 작품에서 작동합니다. 왜?

다음 프로그램

#!/usr/bin/env python 
import socket 
print(socket.getaddrinfo("localhost", 8025, 0, socket.SOCK_STREAM)) 

작품 - 즉, 그것은 오류가 발생하지 않고 몇 가지 물건을 출력합니다.

물건은 사실이다

그러나

[(10, 1, 6, '', ('::1', 8025, 0, 0)), (2, 1, 6, '', ('127.0.0.1', 8025))] 

(. 즉, IPv6의 데이터를 하나 개의 무리와의 IPv4 데이터의 한 무리의), 다른 상자에 동일한 프로그램을 수행합니다 이 :

Traceback (most recent call last): 
    File "socktest.py", line 5, in <module> 
    print(socket.getaddrinfo("localhost", 8025, 0, socket.SOCK_STREAM)) 
socket.gaierror: [Errno -2] Name or service not known 

왜?

노트북은 x86 (즉, 32 비트)이지만 데스크톱은 x86_64이지만, 중요한 점은 놀랄 것입니다. 노트북에는 두 가지 네트워크 인터페이스 (무선 및 유선)가 있지만 데스크톱은 유선 인터페이스 만 있습니다. 다시 그게 관련이 있는지 의심 스럽네. "ifconfig"에 따르면 세 개의 인터페이스 모두 IPv6 주소에 바인딩되었습니다. 나는 노트북, 다시 나에게로 관련이없는 파업이 절

# The primary network interface 
auto eth0 
iface eth0 inet dhcp 

를 ...이 점을 제외하고,을/etc/두 개의 상자에 네트워크를 diffed하고, 차이를 보지 못했다.

:: 당신이 어떤 맥락을 원하는 경우에

: 내 파이썬 프로그램이 이메일을 보내려고하고, 궁극적으로한다 getaddrinfo를 호출하는 이메일 소프트웨어입니다.

+1

"ping localhost"가 둘 모두에서 제대로 작동합니까? – bstpierre

+1

확인할 다른 파일 :'/ etc/services'와'/ etc/resolv.conf'. –

+0

나는 똑같은 문제가있다 : http://stackoverflow.com/q/32008965/936293. 문제가있는 컴퓨터의 /etc/resolv.conf는 192.168.80.254 (홈 라우터)가 첫 번째 줄에 있고 ISP의 DNS 서버가 두 번째 줄에 있습니다. 'dig'는 192.168.80.254에 대한 요청이 잘 돌아가지만'getaddrinfo'는 잘되지 않는다는 것을 보여줍니다. /etc/resolv.conf에서 두 줄을 바꾸면 작동하지만 각 DHCP 새로 고침시 재설정됩니다. 실망. 어떤 팁? –

답변

1

/etc/hosts이 작동하지 않는 상자에서 확인하십시오. localhost에 대한 항목이 있습니까?
/etc/nsswitch.conf도 비교하고 '호스트'행이 누락 된 것처럼 의심스러운 항목이 있는지 확인하십시오.

+0

/etc/hosts는 공백 및 실제 호스트 이름 이외의 두 상자에서 모두 동일합니다. 각각은 "localhost"에 대해 두 개의 항목을 가지고 있습니다 : 하나는 IPv4 용이고 다른 하나는 IPv6 용입니다. /etc/nsswitch.conf는 두 상자에서 동일합니다. 각각에는 "hosts :"행이 있습니다. – offby1

+0

둘 다 telnet localhost 8025를 사용할 수 있습니까? – unbeli

관련 문제