Android-socket服务端断重启后,android客户端自动重连

今天研究这个问题搞了整整一天啊!终于出来了,不过我没有多大的成就感,为何呢?由于这不是个人劳动成果。一样的问题,我却没想出来!心塞的很啊……服务器

不过仍是要给你们分享一下,但愿给你们带来帮助!socket

先声明一下:不是我不放源码,是由于这个功能是我项目的一小部分,贴源码太声势浩荡了,,并且下载后不必定能用,因此就贴核心代码啦~spa

我是以每分钟向服务端发送一个心跳来保持链接的,以下:3d

sendObject()中的代码(就是发送内容到服务端):code

public void sendObject(String obj) throws IOException { DataOutputStream os = new DataOutputStream(socket.getOutputStream()); os.write(obj.getBytes()); os.flush(); System.out.println("发送:" + obj + "客户端"); }

重点来了,怎么保证服务重启时候自动链接呢?blog

public static void resetSocket(){ while(SocketClient.isServerClose(socket)){ try { socket = new Socket(SERVERIP,PORT); } catch (UnknownHostException e) { // TODO Auto-generated catch block //e.printStackTrace();
            } catch (IOException e) { System.out.println("正在重连...."); // TODO Auto-generated catch block //e.printStackTrace();
 } } } /** * 判断是否断开链接,断开返回true,没有返回false * @param socket * @return 
        */  
        public static Boolean isServerClose(Socket socket){ try{ socket.sendUrgentData(0);//发送1个字节的紧急数据,默认状况下,服务器端没有开启紧急数据处理,不影响正常通讯 
            return false; }catch(Exception se){ return true; } } 

最后,将SocketClient.resetSocket();放入图片中的catch{}中,捕获异常的时候从新链接,就能够实现想要的效果了。图片

但愿给你们带来帮助,谢谢!get