在Python 3.6中,可以使用socket
模块来检测套接字/连接是否突然关闭。以下是一个示例代码:
import socket
def check_socket_closed(sock):
try:
# 使用socket的shutdown方法来发送一个空数据,如果连接已关闭,会抛出异常
sock.shutdown(socket.SHUT_RDWR)
return False
except socket.error as e:
# 如果捕获到异常,说明连接已关闭
if e.errno == 10054 or e.errno == 10053:
return True
else:
raise e
# 创建一个套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('localhost', 8080)
sock.connect(server_address)
# 检测套接字是否关闭
if check_socket_closed(sock):
print("套接字已关闭")
else:
print("套接字未关闭")
# 关闭套接字
sock.close()
上述代码中,我们定义了一个check_socket_closed
函数,该函数接受一个套接字作为参数,并尝试使用shutdown
方法发送一个空数据。如果连接已关闭,会抛出socket.error
异常,我们可以通过捕获该异常来判断套接字是否已关闭。其中,e.errno == 10054
和e.errno == 10053
分别表示连接被对方重置或连接被对方关闭。
请注意,以上代码仅适用于检测套接字是否关闭,如果需要检测连接是否关闭,可以在代码中添加相应的逻辑。此外,为了确保代码的可靠性和稳定性,建议在实际使用中进行适当的错误处理和异常处理。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云