進程間通信,肯定會有讀寫等耗時操作,所以要把代碼寫在子線程中。
一、服務端LocalServerSocket
1、創建服務端LocalServerSocket的對象
server = new LocalServerSocket ("ysy_data");2、監聽連接,獲取服務端LocalSocket對象。
client = server.accept ();3、獲取輸入輸出流。
os = new PrintWriter (client.getOutputStream ()); is = new BufferedReader (new InputStreamReader (client.getInputStream ()));4、接收客戶端發過來的數據
String result = ""; while (true) try { result = is.readLine (); Log.i (TAG, "服務端接到的數據爲:" + result); //把數據帶回activity顯示 Message msg = handler.obtainMessage (); msg.obj = result; msg.arg1 = 0x11; handler.sendMessage (msg); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace (); }5、發送數據
//發數據 public void send (String data) { if (os != null) { os.println (data); os.flush (); } }6、關閉流,釋放資源
try { if (os != null) { os.close (); } if (is != null) { is.close (); } if (client != null) { client.close (); } if (server != null) { server.close (); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace (); }二、客戶端LocalSocket
1、創建客戶端對象
client = new LocalSocket ();2、連接服務端
client.connect (new LocalSocketAddress (NAME));3、獲取輸入輸出流
os = new PrintWriter (client.getOutputStream ()); is = new BufferedReader (new InputStreamReader (client.getInputStream ()));4、讀取服務端發送過來的數據
String result = ""; while (true) { try { result = is.readLine (); Log.i (TAG, "客戶端接到的數據爲:" + result); //將數據帶回acitvity顯示 Message msg = handler.obtainMessage (); msg.arg1 = 0x12; msg.obj = result; handler.sendMessage (msg); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace (); } }5、發送數據
//發數據 public void send (String data) { if (os != null) { os.println (data); os.flush (); } }6、關閉流,釋放資源
try { if (os != null) { os.close (); } if (is != null) { is.close (); } if (client != null) { client.close (); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace (); }三、參考文章