python - 测试来自 Python 套接字异常的特定错误号

标签 python sockets

我有一些绑定(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/

相关文章:

python - Sublime Text2导入错误: No module named Gnuplot

python - Windows Python 上的加密解密编码

python - 如何更正 TypeError : Unicode-objects must be encoded before hashing?

sockets - 原始套接字未收到 icmp 响应

python - 如何将文件从客户端发送到服务器并以相同的文件名保存?

python - 如何使用Python请求设置媒体类型?

python - Python 中的 Spark 数据帧 - 使用 UDF 时执行卡住

MySQL 服务器套接字 '/tmp/mysql.sock' 连接问题

c - TCP/IP 套接字 API 书籍

c++ - 通过 UDP winsock 连接发送结构,结构大小?