检查客户端是否仍然连接-使用UDP的Python套接字编程

时间:2018-10-13 13:21:01

标签: python python-3.x sockets udp serversocket

我目前正在使用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和端口。在上面的代码中,我正在测试是否将空白消息发送到客户端,并且它不会引发错误,那么它仍然保持连接状态。不幸的是,即使客户端不再运行,该代码也不起作用,该代码也不会引发异常。请帮我解决我的问题。谢谢。

1 个答案:

答案 0 :(得分:2)

UDP没有“连接”的概念,因此您必须在应用程序层实现该逻辑。例如。让每个客户端每隔几秒钟向服务器发送一个“嗨,我还在这里”数据包。如果服务器发现经过了(大约更多)秒而没有收到来自给定客户端的任何数据包,则服务器可以认为该客户端已消失。

相关问题