You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Socket编程报错:socket类无gethostbyname属性问题求助

错误产生原因

from socket import *属于全量导入,会将socket模块下的所有成员(包括socket类)直接导入当前命名空间,此时代码中使用的socket指向的是套接字类,而非socket模块本身。gethostbyname、gethostname是socket模块的顶层函数,不属于socket类的方法,因此调用socket.gethostbyname会触发属性不存在的异常。

修复方案

两种方案二选一即可:

  • 方案1:调整导入方式,避免命名冲突
    将导入语句修改为:

    import socket
    

    同时调整创建服务套接字的代码为:

    serverSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    

    后续调用模块方法都保持socket.前缀即可正常运行。

  • 方案2:保留全量导入,直接调用已导入的函数
    不需要修改导入语句,直接将报错的行修改为:

    ipadress=gethostbyname(gethostname())
    

    全量导入后函数已经直接暴露在当前命名空间,不需要加模块前缀。

其他代码问题提醒

你的代码还存在两处可修复的逻辑问题:

  • 变量名拼写错误:你定义的变量是ipadress,后续打印语句中写的是ipaddress,多了一个d,运行时会触发变量未定义错误。
  • IP校验逻辑写反:当前代码判断if subnetAdress+'\n' in permitList:时会拒绝访问,和预期的「允许列表内的IP访问」逻辑相反,应该修改为if subnetAdress+'\n' not in permitList:。

内容的提问来源于stack exchange,提问作者젤리야

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 17:06:05