java Socket通信心跳包的断开问题

wxjs360 2017-07-17 11:39:53
下面是我新建的一个socket、连接然后每隔10秒给服务端发送心跳数据

下图是服务端那边因主动或者异常关闭之后,我这边还继续发送了心跳数据而产生的异常。不知道如何解决因异常断开之后,如何重启这个socket问题,又没有会的大神帮小弟解决,在线等,谢谢了!
...全文
1498 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_39985901 2017-11-10
  • 打赏
  • 举报
回复
keepThread和recvThread这两个类怎么实现的
RKGG爱吃鱼 2017-10-13
  • 打赏
  • 举报
回复
楼主,在Android中,彻底关闭应用后,心跳连接还存在,怎么断开啊?
wxjs360 2017-09-06
  • 打赏
  • 举报
回复
成改好了。就是做个简单的改动,可以看下事例代码 public FullDuplexClientDemo(String ip) { try { // socket = threadConnect.get(); // if (socket == null) { socket = new Socket(ip,Integer.valueOf(ConfigUtils.properties.getProperty("CRScannerPort"))); // threadConnect.set(socket); if (tKeep.isAlive() == false && tRecv.isAlive() == false ) { tKeep.start(); tRecv.start(); } // } outStr = socket.getOutputStream(); inStr = socket.getInputStream(); islive = true; } catch (Exception e) { e.printStackTrace(); new WarningDialog(MessageResource.getMessage("MainFrame.TabbedPane.Error", Language.getLocale())+"-Err1007"); socket= null; }
  • 打赏
  • 举报
回复
楼主弄出来没?让咱也参考下下...
wxjs360 2017-07-24
  • 打赏
  • 举报
回复
谢谢了,我只是了解一个思路的,不用麻烦你坐其他的。我先用你这个思路做一下看看
X-i-n 2017-07-24
  • 打赏
  • 举报
回复
直接放图你是想让别人帮你把所有代码再敲一遍吗?还是截图,保存,修改,再上传? try里,第一句去掉,外层的if判断也去掉,直接跑if里面的代码就行。原来的代码只有在new threadConnect对象的时候才会new socket,断开重连的时候,先会获取threadConnect对象的socket,这个socket哪怕断开,仍然是一个存在的对象,永远不会等于null,所以if里的new socket永远不会执行。 手工设置socket=null也可以,但是正确方法应该是threadConnect.set(null)(前提是set方法不对传入的参数做null判断),而不是socket = null。
wxjs360 2017-07-24
  • 打赏
  • 举报
回复


我不清楚那个socket断开之后,为什么getlocal还是原来的那个通信?
我尝试过close,也尝试过socket=null,但是debug看程序的时候不管异常端还是我close,get出来的都是第一次建立的那个连接,不让我重新new。这点我是不能理解,麻烦帮我解释下,谢谢
X-i-n 2017-07-19
  • 打赏
  • 举报
回复
socket对象没有必要复用,每次new client的时候,不用判断if(socket==null),直接new一个socket出来。
wxjs360 2017-07-18
  • 打赏
  • 举报
回复
这位大哥,你说的两种方法确实是两种需求(我两种需求都可行),但是我的问题是socket,close掉之后,我在重新new一个通信客户端类会出现socket已经关闭的异常。不断重新尝试连接会出现我那个IO流通道中的异常,是通信已经断开了,我没有及时监测到还在往服务端发送东西,就会出现问题。这是困扰我的问题,并不是需求问题,这两个放法我都试过,就是没能解决这个问题
X-i-n 2017-07-17
  • 打赏
  • 举报
回复
需求是什么,服务器断开以后,你想怎么处理? 可以在检测到异常断开以后不断重新尝试连接,也可以直接close这个socket,这取决于你的业务。

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧