pc 應用 經過 usb adb 與 android客戶端通信

這回公司要求要實現相似碗豆夾這類的與pc應用進行通信備份通信錄,短信,應用,並對這些信息進行編輯的功能。
這裏主要用到了 adb,socket,pc 應用經過 usb 聯接 android 而後經過發送廣播來啓動 android 裏的服務器端程序。
這是採用 c/s 的通信模式,android 端應用是服務器,pc端的是客戶端。pc應用啓動android端後經過 tcp 協議進行

通信。 php

監聽代碼

        private void doListen() {
                mServerSocket = null;
                try {
                        mServerSocket = new ServerSocket(mServerPort);

                        mMainThreadFlag = true;
                        while (mMainThreadFlag) {
                                Socket client = mServerSocket.accept();

                                // 開啓線程處理客戶端請求併發送響應
                                ServerCmdTransfor sCmdHandler = new ServerCmdTransfor(this.mContext, client);
                                mHdList.add(sCmdHandler);
                                new Thread(sCmdHandler).start();
                        }
                } catch (IOException e1) {
                        e1.printStackTrace();
                }
        }
/**
         * 處理客戶端請求併發送響應 這些規則都是由產品經理協商好先後端的通信協議
         */
        private class ServerCmdTransfor extends TCPServerTransfor implements Runnable {


                public Handler mNotifyHandler = null;
                ServerCmdTransfor(Context context, Socket socket) {
                        super(context, socket);
                }

                @Override
                public void run() {
                        Util.log(TAG, Thread.currentThread().getName()
                                        + " ServerCmdTransfor start");
                        CmdData data = null;

                        // 先接收請求
                        data = readCMD();
                        Util.log(TAG, Thread.currentThread().getName()
                                        + " ServerCmdTransfor readCMD ret " + data);
                        if (data != null) {
                                // 根據cmdId特殊處理
                                if (data.cmdId == CmdData.COMMAND_SMS_RECEIVE_REQ) {
                                        // 手機-->PC端的推送
                                        doNotify();
                                } else {
                                        // 處理
                                        data = TCPServer.this.mCmdHd.processReqCreateResp(data);

                                        Util.log(TAG, Thread.currentThread().getName()
                                                        + " ServerCmdTransfor processReqCreateResp ret "
                                                        + data);
                                        // 而後發送響應
                                        if (data != null) {
                                                boolean ret = sendCMD(data);
                                                Util.log(TAG, Thread.currentThread().getName()
                                                                + " ServerCmdTransfor sendCMD ret " + ret);
                                        }
                                }
                        }
                        try {
                                mSocket.close();
                                Util.log(TAG, Thread.currentThread().getName()
                                                + " ServerCmdTransfor close");
                        } catch (IOException e) {
                                e.printStackTrace();
                        }
                }

更多的移動互聯網的發展趨勢拓者設計吧效果圖移動互聯網應用相關的資料請到互聯網的一點事www.yidin.net 留言 java

android QQ羣:222392467 android

資料: 後端

http://www.yidin.net/discuz/forum.php?mod=viewthread&tid=216&extra=page%3D1 服務器

http://www.yidin.net/?p=9725 併發

相關文章
相關標籤/搜索