我注意到 python 的一些奇怪行为socket.getaddrinfo()
。
如果我连接到 wifi 并调用 socket.getaddrinfo(),它可以工作(当然可以!):
In [3]: socket.getaddrinfo('charlesleifer.com', 80)
Out[3]:
[...]
如果我断开连接,那么我将收到一个错误:
In [4]: socket.getaddrinfo('charlesleifer.com', 80)
---------------------------------------------------------
gaierror Traceback (most
<ipython-input-2-d333ec6c75af> in <module>()
----> 1 socket.getaddrinfo('charlesleifer.com', 80)
最后,如果我重新连接,它将再次工作。
现在这是奇怪的部分。
如果我首先关闭我的wifi,打开一个python终端,然后调用socket.getaddrinfo,正如预期的那样,我将收到与以前相同的错误
In [2]: socket.getaddrinfo('charlesleifer.com', 80)
---------------------------------------------------------
gaierror Traceback (most
<ipython-input-2-d333ec6c75af> in <module>()
----> 1 socket.getaddrinfo('charlesleifer.com', 80)
gaierror: [Errno -2] Name or service not known
但是当我打开wifi时,无论我尝试多少次,我都会继续收到同样的错误!我可以尝试其他主机,它也会失败。
如果我手动向我的/etc/hosts
文件添加一个条目,那么它将返回我在主机文件中放置的任何内容。但是,其他请求继续失败。
这里发生了什么?我难住了。