我仍然对了解套接字连接的状态感到困惑。这就是我正在做的。
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client.connect(("127.0.0.1",9979))
while True:
msg = client.recv(4096)
processNotificationMessage(msg)
time.sleep(0.1)
我想连接到服务器并永远接收数据。但是我怎么知道我的客户端连接是否由于某种原因关闭了呢?
通过谷歌搜索,我发现 client.recv() 将返回一个空字符串或 client.recv() 将抛出异常(但当我停止服务器时没有异常)。但是,如果服务器本身有时发送一个空字符串怎么办?如果我尝试通过检查空字符串来重新连接,它会抛出一个异常,提示已连接。这里的解释( How to tell if a connection is dead in python )对我不起作用。
当我重新启动服务器时,客户端没有收到任何数据。
原文由 Vishal Yarabandi 发布,翻译遵循 CC BY-SA 4.0 许可协议
fileno()
将为关闭的套接字返回 -1。输出
来自文档 18.1 - Socket
套接字在技术上也是一个列表,你可以找到 [closed] 标签
”`