我是靠谱客的博主 清新冰棍,最近开发中收集的这篇文章主要介绍安卓常见建立心跳连接,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

安卓使用tcp 建立心跳连接:

方法如下:

private void initTcpConnect(){
        //先初始化timerTask
        if (tcpTask != null){
            tcpTask.cancel();
            tcpTask= null;
        }
        if (tcpTimer== null){
            tcpTimer= new Timer();
        }

        Thread tcpThread= new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    if (tcpSocket != null){
                        if (tcpSocket.isConnected()){
                            tcpSocket.close();
                            tcpSocket= null;
                        }
                    }

                    if (tcpSocket == null){
                        tcpSocket= new Socket();
                        System.out.println("->创建 tcp");
                        tcpSocket.connect(new InetSocketAddress(Constants.NEW_SERVER_IP, Constants.tcp_port), 2000);
                    }
                    tcpOutputStream= tcpSocket.getOutputStream();
                    tcpInputStream = tcpSocket.getInputStream();
                    tcpReader= new BufferedReader(new InputStreamReader(tcpSocket.getInputStream()));
                    tcpWriter =  new BufferedWriter(new OutputStreamWriter(tcpSocket.getOutputStream()));

                    if (!tcpSocket.isConnected()){
                        System.out.println("->tcp 连接失败");
                        return;
                    }
                    System.out.println("->tcp是否连接= "+ tcpSocket.isConnected());
                    while (tcpSocket.isConnected()){
//                        byte[] bt= new byte[1024];
//                        int len= tcpInputStream.read(bt);
//                        System.out.println("->len= "+ len);
//
//                        System.out.println("->len= "+ len);
//                        if (len> 0){
//                            byte[] bs= new byte[len];
//                            System.arraycopy(bt, 0, bs, 0, len);
//                            String str= new String(bs, "UTF-8");
//                            if (str != null){
//                                Message msg= tcpHandler.obtainMessage();
//                                msg.obj= str;
//                                msg.what= 500;
//                                tcpHandler.sendMessage(msg);
//
//                            }
//                        }
                        String str= tcpReader.readLine();
//                        if (str != null){
//                            Message msg= tcpHandler.obtainMessage();
//                            msg.obj= str;
//                            msg.what= 500;
//                            tcpHandler.sendMessage(msg);
//                        }
                        //第二种方式
                        JSONObject obj= null;
                        try {
                            obj= new JSONObject(str);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                        if (obj != null){
                            if (obj.has("code") && obj.has("msg")){
                                try {
                                    if (obj.getInt("code")== 100 && obj.getString("msg").equalsIgnoreCase("Handshake")){
                                        clientId= obj.getInt("clientId");
                                        tcpTask= new TimerTask() {
                                            @Override
                                            public void run() {
                                                String uuid = SPManage.getUUIDInfo(BaseService.this);
                                                initUdpConnection11(uuid, clientId); //发送json 数据


                                                //tcp 的方式处理
//                                                    else if (code1 == 1 && isTcpConnect) {//心跳包
//                                                    System.out.println("1111----tcp连接: code= 1");
//                                                    code = 1;
//                                                    isConnected = true;
                        handler.removeMessages(111);
                        handler.sendEmptyMessage(67);//发送心跳包成功才能发送数据 不然提示uuid过期或不正确
//                                                    whileSendInstruct11();
                        whileSendInstruct();
//                                                    if(!TextUtils.isEmpty(send_data)) {
//                                                        sendData(send_data);
//                                                    }
//                                                }
//                                                else if(code1== 2 && isTcpConnect){//心跳包
//                                                    System.out.println("1111----tcp连接: code= 2");
//                                                    if(obj.has("info")){
//                                                        code = 2;
//                                                        String info= obj.getString("info");
//                                                        if(info.contains("心跳更新成功tcp") || info.contains("心跳包更新成功tcp")){
//                                                            tcpCount = 0;
//                                                            handler.removeMessages(MSG_SERVER_TCP_CLOSE);
//                                                        }
//                                                    }
//                                                }

                                            }
                                        };
                                        tcpTimer.schedule(tcpTask, 1, 10000);

                                    }
                                } catch (JSONException e) {
                                    e.printStackTrace();
                                }

                            }else {
                                if (obj.has("code")){
                                    try {
                                        int code = obj.getInt("code");
                                        Message msg= tcpHandler.obtainMessage();
                                        switch (code){
                                            case 1:
                                                System.out.println("->tcp 接收到1: "+ obj.toString());
                                                break;

                                            case 2:
                                                System.out.println("->tcp 接收: "+ obj.toString());
                                                break;

                                            case 10:
                                                msg.what= 501;
                                                msg.obj= obj.toString();
                                                tcpHandler.sendMessage(msg);

                                                break;

                                            case 11:
                                                System.out.println("->tcp 接收: "+ obj.toString());
                                                break;

                                            case 12:
                                                System.out.println("->tcp 接收: "+ obj.toString());
                                                break;

                                            case -1:
                                                System.out.println("->tcp 接收: "+ obj.toString());
                                                break;







                                        }
                                    } catch (JSONException e) {
                                        e.printStackTrace();
                                    }
                                }
                            }
                        }// obj 不为null
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
        tcpThread.start();
    }

最后

以上就是清新冰棍为你收集整理的安卓常见建立心跳连接的全部内容,希望文章能够帮你解决安卓常见建立心跳连接所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部