【问题标题】:getaddrinfo behavior during reconnect重新连接期间的 getaddrinfo 行为
【发布时间】:2014-02-26 03:07:29
【问题描述】:

我注意到 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 文件添加一个条目,那么它将返回我在主机文件中放置的任何内容。但是,其他请求继续失败。

这里发生了什么?我被难住了。

【问题讨论】:

    标签: python linux networking getaddrinfo


    【解决方案1】:

    我的一个朋友分享了以下补丁,它手动刷新解析器缓存。这解决了我的问题。

    http://bugs.sugarlabs.org/attachment/ticket/1940/network.py.patch

    【讨论】:

      猜你喜欢
      • 2013-03-19
      • 2017-03-12
      • 1970-01-01
      • 1970-01-01
      • 2021-03-31
      • 2012-03-28
      • 2013-11-08
      • 2015-01-30
      • 2016-12-01
      相关资源
      最近更新 更多