TCP通信客户端Socket 心跳线程的实现

流子 流子 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
如果自己去实现心跳功能其实最土的办法是隔一定时间向服务端发送一个心跳包,然后服务端如果收到了,服务端就发送一个响应信号,如果客户端在一定的时间间隔内取得了这个响应,那么连接是正常的,如果没有取得,那么重连这个socket.
我想如果JDK已经实现了这个功能的话,那我就没必要自己再去造轮子了。

参考了一下网上的资料,说是socket.setKeepAlive(true)就实现了心跳包的发送功能,我不知道这个API每隔多少时间去发送一次,还是这种用法有些误解,我假定这种用法是对的,那么,心跳时间间隔我自己实现:
在Client中

心跳线程中的
Socket socket= Socket("127.0.0.1",8080);
socket.setKeepAlive(true);


run里如下实现,每隔60秒触发一下,

public void run{

while(true){
if(socket.getKeepAlive){

System.out.println("Client connect to Server is OK");
}else{
socket=soket("127.0.0.1",8080);
}


try {
Thread.sleep(60000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}


}

...全文

相关推荐

评论 13
收藏 已收藏
分享
返回顶部
流子
流子 优质创作者: 游戏开发技术领域 优质创作者: 游戏开发技术领域领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
Java SE 62,621 成员 307,251 内容