【问题标题】:Traceback (most recent call last): File "", line 1, in AttributeError: module 'socket' has no attribute 'close'回溯(最后一次调用):文件“”,第 1 行,在 AttributeError 中:模块 'socket' 没有属性 'close'
【发布时间】:2018-07-31 12:33:41
【问题描述】:

我需要编写一个程序来检索域名列表的 IP 地址。简单的例子可以在这里展示:

>>> import socket
>>> socket.gethostbyname('google.com')
'172.217.160.14'
>>> socket.close()

尝试关闭套接字后,我收到此错误:

Traceback(最近一次调用最后一次):文件“”,第 1 行,in AttributeError: 模块 'socket' 没有属性 'close'

如何关闭此套接字?我需要关闭它,因为我的实际程序有循环,在列表中的每个域名中我需要获取它的 IP,所以我需要在每次迭代中关闭新主机的套接字。

你能告诉我是什么问题吗?

【问题讨论】:

    标签: python sockets network-programming gethostbyname


    【解决方案1】:

    代码中的socket 指的是socket 模块,它没有close 函数。 Python 3.7 中添加了一个新的模块级别 close 函数,但它需要一个套接字描述符作为参数。如果我没看错,你想调用socket object 的close 方法,而不是模块。在您的情况下,您不需要关闭任何连接。

    【讨论】:

      【解决方案2】:

      您不会在这里创建套接字,也不会将其绑定到任何端口。 socket.gethostbyname('google.com') 所做的是将主机名转换为 IPv4 地址格式。 .close() 方法对打开的连接有效。

      【讨论】:

      • 那么将它放在一个我称之为 socket.gethostbyname(domain[i]) 的循环中是否安全,我有一个域名列表?这会引起混乱吗?
      猜你喜欢
      • 2019-04-01
      • 2021-10-21
      • 2016-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-02
      相关资源
      最近更新 更多