Python - 如何检查套接字是否仍然连接
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python - 如何检查套接字是否仍然连接相关的知识,希望对你有一定的参考价值。
我有以下代码,这是自我解释:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(host, port)
s.send("some data")
# don't close socket just yet...
# do some other stuff with the data (normal string operations)
if s.stillconnected() is true:
s.send("some more data")
if s.stillconnected() is false:
# recreate the socket and reconnect
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(host, port)
s.send("some more data")
s.close()
我如何实现s.stillconnected()
我不希望盲目地重新创建套接字。
答案
如果服务器连接不再处于活动状态,则调用send方法将引发异常,因此您可以使用try-exception块尝试发送数据,捕获异常(如果它被抛出)并重新建立连接:
try:
s.send("some more data")
except:
# recreate the socket and reconnect
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(host, port)
s.send("some more data")
编辑:根据@ Jean-Paul Calderone的评论,请考虑使用sendall
方法,这是一种发送所有数据或抛出错误的更高级别方法,而不是send
,这是一种不保证传输的低级方法所有数据,或使用更高级别的模块,如可以处理套接字生命周期的HTTP库。
以上是关于Python - 如何检查套接字是否仍然连接的主要内容,如果未能解决你的问题,请参考以下文章