zoukankan      html  css  js  c++  java
  • Android-socket服务端断重启后,android客户端自动重连

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

    不过还是要给大家分享一下,希望给大家带来帮助!

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

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

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

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

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

    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{}中,捕获异常的时候重新连接,就可以实现想要的效果了。

    希望给大家带来帮助,谢谢!

  • 相关阅读:
    二十一、正则表达式
    二十、冒泡算法,递归,装饰器
    十九、python内置函数汇总
    Jenkins-[--4--]-浏览器不能打开jenkins报告,报错Opening Robot Framework report failed
    Jenkins-[--3--]-robotframework脚本,配置自动发送邮件
    Jenkins-[--2--]-执行本地的robotframework项目
    Jenkins-[--1--]-环境配置
    Redis常用数据类型介绍、使用场景及其操作命令
    angular过滤器
    jscode属性排序
  • 原文地址:https://www.cnblogs.com/yunfang/p/5030030.html
Copyright © 2011-2022 走看看