ssl socket 为什么频繁意外断开

flyfight88 2013-07-26 03:05:53
我建了一个基于SSLsocket通信的客户端和服务端,socket连接后没设置close。
private InputStream in;
private byte[] mDateBuf = new byte[1024];
while ((in.read(mDateBuf)) != -1) {
log.e(TAG,"socketData: " +mDateBuf );
}
log.e(TAG, “socket err”);

客户端,服务端都是这种while循环read数据,我是通过循环退出,判断socket断开的.
客户端每隔5秒会发一个心跳包,服务端会回应,可是这种长连接在我网络环境下十几分钟就会退出循环,原因是socket意外断开了,read返回值为-1,退出了循环。
我想问下,这种socket频繁断开现象正常吗?有没有解决方法?
...全文
725 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
可乐罐 2013-08-23
  • 打赏
  • 举报
回复
网络中断是不可预知的,早期的socket做法是定时发送心跳包,如果在预设时间间隔内收到回应包,则认为连接正常。如果没响应,则判断为已经断开。当然,如果你用的socket组件提供检测网络连接状态的功能,那就最好了
flyfight88 2013-08-23
  • 打赏
  • 举报
回复
看来只能检测到中断重连了,一直没找到socket断开的原因
flyfight88 2013-08-22
  • 打赏
  • 举报
回复
引用 4 楼 losebaby 的回复:
网络不是水管,每次阀门打开就一般不会断。。。。。。 长连接限制啊、网络设备重置啊什么的,都会引起连接断开 如果一个socket程序不处理这个情况,基本上属于实验室没实用化的demo
是否应该这样理解:网络连接后有些中断情况是无法避免的,只要能快速检测出网络中断,并再次连接上,就可以了?
flyfight88 2013-08-20
  • 打赏
  • 举报
回复
引用 4 楼 losebaby 的回复:
网络不是水管,每次阀门打开就一般不会断。。。。。。 长连接限制啊、网络设备重置啊什么的,都会引起连接断开 如果一个socket程序不处理这个情况,基本上属于实验室没实用化的demo
我的服务端只连接两到三个客户端,应该不会有长连接限制的问题吧,网络设备重置是什么意思呢?我没动过路由器,应该不会重置吧。
flyfight88 2013-08-20
  • 打赏
  • 举报
回复
引用 4 楼 losebaby 的回复:
网络不是水管,每次阀门打开就一般不会断。。。。。。 长连接限制啊、网络设备重置啊什么的,都会引起连接断开 如果一个socket程序不处理这个情况,基本上属于实验室没实用化的demo
说到点子上了,谢谢了,可是网上很难找到这些资料,我也没找到相关书籍,平时只是简单的用用SOCKET通信,没深入研究过稳定性,您能稍微详细点说明socket要怎么处理这些情况吗?我知道C/C++的SOCKET有中断信号,JAVA都是封装好的,应该没有中断信号吧?
可乐罐 2013-08-19
  • 打赏
  • 举报
回复
网络不是水管,每次阀门打开就一般不会断。。。。。。 长连接限制啊、网络设备重置啊什么的,都会引起连接断开 如果一个socket程序不处理这个情况,基本上属于实验室没实用化的demo
flyfight88 2013-08-19
  • 打赏
  • 举报
回复
引用 2 楼 qyj415 的回复:
客户端连接突然中断跳出循环很正常,网络异常,手动切断连接都会跳出循环,不过这样写的循环,只能都一次连接的数据啊,收到数据后一直在那循环有啥用?
谢谢你的回答,等了好久终于有人回帖了,这问题我到现在还没解决。因为我这里客户端服务端要一直不停的发送各种信号数据,所以连接之后只要不手动断开socket,就要一直保持通信状态,现在我的问题出在:不手动断开socket,他还是会经常read返回-1,退出循环。一般只有读完数据才返回-1,可是我不是传输文件,只是socket通信,所以应该没数据的时候只会等待数据而不会出现read返回-1的情况吧,所以我只能猜测是我的网络不稳定导致socket中断了,可是socket也不会如此的不稳定吧。
独行码夫 2013-08-15
  • 打赏
  • 举报
回复
客户端连接突然中断跳出循环很正常,网络异常,手动切断连接都会跳出循环,不过这样写的循环,只能都一次连接的数据啊,收到数据后一直在那循环有啥用?
flyfight88 2013-08-01
  • 打赏
  • 举报
回复
居然没人回复。。。。。。

50,548

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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