首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >socket.getaddrinfo在一台机器上失败;在另一台明显相同的机器上工作。为什么?

socket.getaddrinfo在一台机器上失败;在另一台明显相同的机器上工作。为什么?
EN

Stack Overflow用户
提问于 2010-07-16 06:06:02
回答 1查看 1.2K关注 0票数 1

我有一台笔记本电脑和一台台式机,它们都运行Ubuntu 10.04,都运行Ubuntu附带的普通Python 2.6.5。

在笔记本电脑上,执行以下程序

代码语言:javascript
复制
#!/usr/bin/env python
import socket
print(socket.getaddrinfo("localhost", 8025, 0, socket.SOCK_STREAM))

工作--也就是说,它打印出一些东西而不会出现错误。

事实上,这些东西是:

代码语言:javascript
复制
[(10, 1, 6, '', ('::1', 8025, 0, 0)), (2, 1, 6, '', ('127.0.0.1', 8025))]

(这是一堆IPv6数据和一堆IPv4数据。)

但是,在另一台机器上,相同的程序执行以下操作:

代码语言:javascript
复制
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/network进行了比较,除了笔记本电脑有这个子句之外,没有什么不同

代码语言:javascript
复制
# The primary network interface
auto eth0
iface eth0 inet dhcp

..。再一次,我觉得这是无关紧要的。

::

如果您需要一些上下文:我的Python程序正在尝试发送电子邮件,而最终调用getaddrinfo的是电子邮件软件。

EN

回答 1

Stack Overflow用户

发布于 2010-07-16 06:10:45

选中不起作用的框上的/etc/hosts。是否有localhost的条目?

还要比较/etc/nsswitch.conf,看看是否有什么可疑之处,比如缺少'hosts‘行

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3260469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档