我有一臺運行Ubuntu 10.04的筆記本電腦和臺式機,都運行Ubuntu附帶的股票Python 2.6.5。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地址。我顯示差異的/ etc /網絡上的兩個箱子,看到沒有什麼區別,除了筆記本電腦有此條款
# The primary network interface
auto eth0
iface eth0 inet dhcp
...這,再次,在我看來是無關緊要的。
::
如果你想一些背景:我的Python程序試圖發送電子郵件,並且它是最終調用的getaddrinfo電子郵件軟件。
「ping localhost」在兩者上都能正常工作嗎? – bstpierre 2010-07-15 23:15:44
要檢查的其他文件:'/ etc/services'和'/ etc/resolv.conf'。 – 2010-07-16 02:08:54
我有完全相同的問題: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刷新時都會重置。令人沮喪。有小費嗎? – 2016-01-28 04:58:41