此问题将扩展至:Best way to open a socket in Python
打开套接字时,我如何测试它是否已建立,并且它没有超时,或者通常失败。
编辑:
我试过这个:
try:
s.connect((address, '80'))
except:
alert('failed' + address, 'down')
但即使该连接应该工作,也会调用警报函数。
最佳答案
似乎你没有捕捉到你想捕捉的异常:)
如果 s
是 socket.socket()
对象,那么调用 .connect
的正确方法是:
import socket
s = socket.socket()
address = '127.0.0.1'
port = 80 # port number is a number, not string
try:
s.connect((address, port))
# originally, it was
# except Exception, e:
# but this syntax is not supported anymore.
except Exception as e:
print("something's wrong with %s:%d. Exception is %s" % (address, port, e))
finally:
s.close()
始终尝试查看您在 try-except 循环中捕获的异常类型。
您可以检查套接字模块中的哪些类型的异常代表了哪些类型的错误(超时、无法解析地址等),并为每个异常创建单独的 except
语句 - 这样您'将能够针对不同类型的问题做出不同的 react 。
关于python - 在 Python 中测试套接字连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/177389/