我有一些绑定(bind)到套接字的 python 代码。我捕捉到任何异常,以便我可以处理它。根据错误,我想做不同的事情。我怎么知道错误号是什么意思?
例如,我想做类似的事情:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.bind(('', 80))
except socket.error, ex
(error_number, error_message) = ex
if error_number==EADDRINUSE:
print "You can't bind to that port -- someone else is using it"
else:
print "Unknown socket error"
除了我不知道 EADDRINUSE 对应的错误号是什么。在我的 Ubuntu 机器上它是 98,在运行 OS X 10.5 的 Mac 上它是 48,在 Windows XP 机器上它是 10048。是否有一些地方将这些包含在 python 库中?
我意识到数字不同是因为 C 层中 errno.h 的不同,但我不知道它们在 python 中暴露在哪里。同样,我假设我不能依赖错误消息是一个特定的字符串。
此外,我不仅关心 EADDRINUSE——我还想介绍其他错误。
最佳答案
这些错误都在 errno 中定义。标准库中的模块。
关于python - 测试来自 Python 套接字异常的特定错误号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5667722/