我目前正在使用UDP开发聊天应用程序。我如何知道客户端是否仍连接到服务器或仍在运行?下面是我的代码:
for i, addr in enumerate(self.all_addresses):
try:
self.socket.sendto(str.encode(''), ('<broadcast>', int(addr[1])))
except e:
del self.all_addresses[i]
continue
self.all_addresses包含绑定到服务器的客户端的ip和端口。在上面的代码中,我正在测试是否将空白消息发送到客户端,并且它不会引发错误,那么它仍然保持连接状态。不幸的是,即使客户端不再运行,该代码也不起作用,该代码也不会引发异常。请帮我解决我的问题。谢谢。
答案 0 :(得分:2)
UDP没有“连接”的概念,因此您必须在应用程序层实现该逻辑。例如。让每个客户端每隔几秒钟向服务器发送一个“嗨,我还在这里”数据包。如果服务器发现经过了(大约更多)秒而没有收到来自给定客户端的任何数据包,则服务器可以认为该客户端已消失。