问题描述:服务端每隔5 分钟向客户端发送一次数据, 数据内容为0x05。如果客户端在经过该时间间隔后没有收到该数据内容,
可认为TCP链路出现故障,重新与服务端建立连接.服务端每隔5 分钟发送一次数据已经实现。 现在的问题是在客户端如何判断在“经过该时间间隔后没有收到该数据内容”??
哪位大虾有思路指点一下client.java
class Client extends Thread{
void run(){
socket = new Socket(IP_ADDRESS, PORT);
while(true){
reader = socket.getInputStream();
writer = socket.getOutputStream();
........下面该怎么来做?
}
}
void tryConn(){};
}我的思路是:
class Client extends Thread{ private long startTime;
private boolean isNewLinelink = false;
void run(){
socket = new Socket(IP_ADDRESS, PORT);
while(true){
reader = socket.getInputStream();
writer = socket.getOutputStream();
byte readData = 实际读出来的数据;
//每次发过来数据为0x05时就设置此时为起始时间
if(readData == 0x05){
Date date = new Date();
startTime = date.getTime()/1000;
isNewLinelink = true;
}
//如果超过五分钟没有新的链路数据发送过来,重新建立连接
if((( System.currentTimeMillis()/1000 - startTime) > 60*5)
&& isNewLinelink==false){
tryConn();
}
isNewLinelink = false;
}
}
void tryConn(){};
}不知道我这样的思路有没有问题? 或者大家还有更好的方法??
可认为TCP链路出现故障,重新与服务端建立连接.服务端每隔5 分钟发送一次数据已经实现。 现在的问题是在客户端如何判断在“经过该时间间隔后没有收到该数据内容”??
哪位大虾有思路指点一下client.java
class Client extends Thread{
void run(){
socket = new Socket(IP_ADDRESS, PORT);
while(true){
reader = socket.getInputStream();
writer = socket.getOutputStream();
........下面该怎么来做?
}
}
void tryConn(){};
}我的思路是:
class Client extends Thread{ private long startTime;
private boolean isNewLinelink = false;
void run(){
socket = new Socket(IP_ADDRESS, PORT);
while(true){
reader = socket.getInputStream();
writer = socket.getOutputStream();
byte readData = 实际读出来的数据;
//每次发过来数据为0x05时就设置此时为起始时间
if(readData == 0x05){
Date date = new Date();
startTime = date.getTime()/1000;
isNewLinelink = true;
}
//如果超过五分钟没有新的链路数据发送过来,重新建立连接
if((( System.currentTimeMillis()/1000 - startTime) > 60*5)
&& isNewLinelink==false){
tryConn();
}
isNewLinelink = false;
}
}
void tryConn(){};
}不知道我这样的思路有没有问题? 或者大家还有更好的方法??
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货