socket.getaddrinfo 报错“未知主机”的谜团

1 投票
1 回答
3524 浏览
提问于 2025-04-16 03:36

我在用Python的socket类解析主机名时遇到了问题。

在命令行里,我可以成功ping通这个主机名,也能用host命令解析出主机名:

host myhostname.mydomain.com

但是当我用Python尝试解析时,出现了一个socket.herror异常,提示信息是"[Errno 1] Unknown host"。

socket.gethostbyaddr("myhostname.mydomain.com")

我最近在resolv.conf文件里添加了名字服务器,可能我需要重启什么东西,让Python能看到这些更新?

有没有什么建议?

1 个回答

8

你需要使用 gethostbyname,而不是 gethostbyaddr(后者是进行反向查找的)。

>>> socket.gethostbyname('car.spillville.com')
'209.20.76.192'
>>> socket.gethostbyaddr('209.20.76.192')
('car.spillville.com', [], ['209.20.76.192'])

撰写回答