Avi*_*ion 2 python sockets error-handling
我在Linux上使用python 2.4.1,在我工作的公司内部编写python包,用于在两台主机之间建立连接以进行测试.
在建立连接时,定义为客户端的一方在socket.connect使用错误代码111使用正确的参数(我已检查)进行调用时失败.在网上搜索此错误意味着,我了解到这意味着连接被主动拒绝.
但是用于建立连接的包中的代码应该处理它,只有它知道10061作为同一错误的错误代码:连接被拒绝.
可能是因为相同的逻辑错误存在相同的错误代码吗?可能是111是Linux操作系统的系统错误,因为10061是python甚至是另一个操作系统?即便如此,错误代码的整个概念不是用相同的代码统一逻辑错误吗?
我应该简单地将111错误代码添加到处理条件中吗?
看起来Python正在暴露操作系统的错误代码 - 代码的解释依赖于操作系统.
111 ECONNREFUSED在许多Linux系统上,在Cygwin上.
146 ECONNREFUSED在Solaris上.
10061 WSAECONNREFUSED在winerror.h中 - 它是Windows Socket API的版本ECONNREFUSED.
毫无疑问,在其他系统上,它又是不同的.
处理此问题的正确方法是使用基于操作系统定义的符号比较ECONNREFUSED; 例如,这就是你在C中的表现方式.换句话说,在一个特定于平台的库中(在任何情况下都需要链接到OS的套接字基元),并且将错误代码与ECONNREFUSED常量进行比较,请为该平台提供一个ECONNREFUSED值,该值为ECONNREFUSED.而不是魔术数字.
我不知道Python的OS错误代码的标准方法是什么.我怀疑它没有经过深思熟虑.