我在用 Python 编写 TCP 服务器时注意到,当一端或另一端意外停止时,在不同的条件下会发生一些错误。
例如,有时我得到“管道损坏”(errno.EPIPE
),有时是“连接中止”(errno.CONNABORTED
或errno.WSAECONNABORTED
)。还有一个问题是跨操作系统的代码是不一样的,但我猜 Python 的errno
模块可以处理这个问题。
我搜索了很多套接字连接错误代码含义的列表,但没有找到我要查找的内容。
到目前为止,我所拥有的是:
try:
# write or read operation
except socket.error as e:
if e.errno in (errno.EPIPE, errno.ECONNABORTED, errno.WSAECONNABORTED):
print 'Connection lost with server...'
到现在为止,一切都很顺利,甚至在添加最后一个之前,我在Windows上遇到了问题,并添加了它,所以我担心可能有一些我没有处理的情况。此外,有时,它只是没有抛出错误并继续读取空行(带有recv
)和错误的文件描述符等。
SocketServer
类提供这样的东西吗?还是一般的 TCP 连接?