【发布时间】:2012-11-10 20:49:28
【问题描述】:
我在用 Python 编写 TCP 服务器时注意到,当一端或另一端意外停止时,在不同的条件下会发生一些错误。
例如,有时我得到“管道损坏”(errno.EPIPE),有时“连接中止”(errno.CONNABORTED 或errno.WSAECONNABORTED)。还有跨操作系统the codes are not the same 的东西,但我猜Python 的errno 模块可以处理这个问题。
我搜索了很多socket连接错误代码的含义列表,没有找到我要查找的内容。
到目前为止,我得到的是这样的:
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 连接?
【问题讨论】:
标签: python sockets networking tcp