我需要在我的Java项目中实现一个心跳系统(3-5个客户端,1个服务器),但我有一些问题。
1)客户端是否需要两个套接字?一个用于心跳,一个用于接收软件的正常消息
2)我看到在特定情况下,当客户端延迟时,客户端没有收到消息,如何避免这种情况?
3)当客户端断开连接时,如何恢复连接?而不用它重新创建新的套接字。
发布于 2018-10-06 04:21:26
你可以试着看看我为一个项目做的这个小框架,我去年参与了一个项目。它专注于一个简单的实现,并提供关于客户状态的强有力的反馈。
它基于UDP协议,它发送一个包含id的有效负载,id可以是NIC的MAC地址,也可以是您自动选择和设置的id或其他东西,以确认客户端是安全的和健康的。
我认为这很酷,因为它基于侦听器,然后侦听器根据心跳协议计算的客户端状态接收各种事件。
你可以在here找到更多关于它的信息
我认为将它与TCP套接字一起使用来了解您是否有能力通过TCP流发送数据是很方便的。拥有对客户状态的连续反馈可以让您轻松实现这一点,例如,通过将客户状态保存在某种地图中,并在发送任何类型的数据之前对其进行检查。
https://stackoverflow.com/questions/33869092
复制相似问题