问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java的自动发送心跳包究竟是该写在服务器还是客户端

发布网友 发布时间:2022-04-26 09:58

我来回答

2个回答

热心网友 时间:2022-06-27 02:26

socket.setKeepAlive()应该写在客户端,server.accept()是服务器端的。

心跳的也有现成的,不过依赖别的类。大概贴一下,就是这么个意思。


public class HBHBThread extends Thread {
private CommandDeal command;
 
/**
 * @return the command
 */
public CommandDeal getCommand() {
return command;
}

/**
 * @param command
 *            the command to set
 */
public void setCommand(CommandDeal command) {
this.command = command;
}

public void run() {

long maxWait = SendConfig.hbhb_wait;
if (maxWait < 1000) {
maxWait = 1000;
}
Date lastTime;
long timeDiv=0;
while (1 == 1) {
 lastTime=SocketQueueObject.getLastContactTime();
 if(lastTime!=null){
 timeDiv=(new Date()).getTime() - SocketQueueObject.getLastContactTime().getTime();
 System.out.println("TimeDiv:"+timeDiv);
 }
// 上次联系的时间超过最大等待,或者还没联系过
if (lastTime == null|| timeDiv >=maxWait) {
System.out.println("HBHB"); 
command.sendHbhbCommand();
}else if(maxWait>timeDiv){
maxWait=maxWait-timeDiv;
}
try{
this.sleep(maxWait);
}catch(Exception e){
e.printStackTrace();
}
}
}

public class HBHBCommandDeal extends CommandDealInterface {
private static Logger msg_logger = Logger.getLogger("socketMsg");

@SuppressWarnings("unchecked")
public List doCommand(SocketQueueObject socketQueueObject, Map command) throws Exception {
List<String> commandList = (List) command.get(Constants.SMSCOMMAND);
byte[] hbhbMsg = TL1Tool.createCommand(commandList.get(0));
msg_logger.info(" send message to sms packed:" + new String(hbhbMsg, "ISO-8859-1"));
TL1RetrunMessage retMsg = socketQueueObject.commNGNServer(hbhbMsg);
retMsg.resolve();
msg_logger.info(" recevice message from sms:"+ retMsg.getMessage()); 
List returnList = new ArrayList();
returnList.add(retMsg);
return returnList;
}
}

你可以自己找找看啊。

热心网友 时间:2022-06-27 02:26

我没做过这个开发,但我觉得socket.setKeepAlive()应该写在客户端,server.accept()是服务器端的。这两个不应该写在一起。供参考。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 SO_KEEPALIVE是java中哪个类的呀,是什么意思呀 大理州有哪些旅游景点 云南大理有哪些好耍的地方 云南大理有哪些好玩的地方 云南大理有哪些好玩的? 大理宾川鸡足山景区的景区概述 云南大理有哪些景点 云南大理南涧旅游景点和宾川哪个好玩? 大理宾川有哪些旅游景点 提子酒跟红酒有什么区别么? 葡萄蒸馏酒和红提葡萄蒸馏酒有什么区别? 酿酒使用葡萄,食用葡萄和提子到底有什么区别 人教版初二物理下预习 提子酒和葡萄酒一样吗? 人教版八年级下册物理期中复习提纲 提子是葡萄吗?可不可以用它酿葡萄酒? 初二物理人教版下册一至八章所有计算公式和知识点. 求计算公式的整理.各条公式的原型及变形公式. 酿酒葡萄,食用葡萄和提子到底有什么区别 帮忙总结一下八年级人教版上下册物理知识点 堤子酿酒有葡萄酿酒好吗 如何实现java http长连接推送数据 java 服务端怎么释放http连接 如何判断websocket断开 java.net.SocketException: Software caused connection abort: recv failed Java netty的option(ChannelOption.SO_BACKLOG, backLog)什么意思 apache mina 是长连接还是短连接 如何整合Apache与Tomcat 微信小程序怎么改变picker-view的背景颜色 微信小程序的picker组件不能使用对象怎么办 微信小程序picker只能是数组吗 微信小程序picker有没有触发 小程序怎么判断picker mode region 小程序商城列表的数据是绑定在js 怎么实现下拉? “索取销售款凭据”是指什么? 求助,取得索取营业收入款项凭证是什么意思 有个问题求教:销售货物或应税劳务的纳税义务的发生时间为收讫销售款项或取得索取销售款项凭据的当天。 如何确定取得索取销售款项凭据的“当天”? 销售款项凭据是指什么 房地产开发企业自行开发房地产的会计处理有哪些 房地产企业预售阶段取得的成本票据企业所得税汇算吋如何处理?