java 长连接正常交易发送信息不跑心跳怎么实现?

 我来答
manwu91
2015-07-29 · TA获得超过486个赞
知道小有建树答主
回答量:385
采纳率:71%
帮助的人:288万
展开全部
如果不想跑心跳就只能保持socket连接了,但这样对服务端压力太大,而且连接不是很稳定, 还不如跑心跳呢。
追问
是这样的,交易过来就发交易包,距离上次交易之后多长时间没有交易发生就发心跳包,保持连接。现在就起发送交易包和心跳包是分两个线程还是一个线程里写好?这块有点乱。
追答
肯定两个啊,心跳是定时发送的,而交易包发送时间是不固定的,如果放一起你得处理它们之间的发送顺序吧,如果交易失败或者出现未知异常会同时对两个业务产生影响
wzlbl8
2015-07-29 · TA获得超过158个赞
知道答主
回答量:8
采纳率:0%
帮助的人:5.4万
展开全部
不跑心跳?你指的是不定时发送心跳包。那是很难保证长连接的(特别是在互联网环境下),除非信息交往非常密集。TCP连接本身是长连接,不会自己断开,但会因:网络故障、防火墙、智能网络设备、等各种原因断开。心跳包主要是来通知这些智能设置,我还活着,不要把我断开。
更多追问追答
追问
是这样的,交易过来就发交易包,距离上次交易之后多长时间没有交易发生就发心跳包,保持连接。现在就起发送交易包和心跳包是分两个线程还是一个线程里写好?这块有点乱。
追答
是否用同个线程,主要看你代码怎么写容易点。你可以专门开个线程发心跳包。也可以用同一个线程,可以利用socket.setSoTimeout()方法来设置读取超时,也就是超过一定时间没收到数据就发送一个心跳包。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式