通信。 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 併發