繁体   English   中英

AttributeError: '_socketobject' 对象没有属性 'error'

[英]AttributeError: '_socketobject' object has no attribute 'error'

我正在使用 python 2.7。 在该代码中,listen_list 是一个包含 UDP 和 TCP 套接字的列表,并且当 TCP 套接字关闭时必须发生错误,因为客户端与服务器断开连接。 我不知道,因为在程序的其他部分错误是可以的,但在这一行中我得到了那个错误。

import sys #for exit
import socket #for sockets
import select

listen_list = copy.copy(UDPlist) #list with listening udp sockets
listen_list.append(mySocket) #mySocket is a TCP socket for connect with client
try:
    rlist, wlist, elist = select.select(listen_list, [], [], 5)
except socket.error:
   print 'Failed. There is some socket that is invalid'
   listen_list = delete()
   continue

当我运行服务器时,它会一直工作,直到遇到此错误

File "server.py", line 67, in <module>
except socket.error:
AttributeError: '_socketobject' object has no attribute 'error'

_socketobject是由所指类型socket.socket 错误消息显示在代码中的某处, socket绑定到socket.socket一个实例,隐藏了模块。

>>> import socket
>>> socket = socket.socket()   # this happens somewhere in your code
>>> socket.error
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: '_socketobject' object has no attribute 'error'

删除对socket的分配,例如选择不同的名称,以使模块及其内容可访问。

>>> import socket
>>> some_socket = socket.socket()   # this should be done instead
>>> socket.error
<class 'socket.error'>

如文档中所述,socket.error 已被弃用,因为 Python 3.3 和 OSError 被引发。

从 Python 3.3 开始,与套接字或地址语义相关的错误引发 OSError 或其子类之一(它们曾经引发 socket.error)。

查看https://docs.python.org/3/library/socket.html了解更多详情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM