Android Linux Socket 資料傳輸錯誤
阿新 • • 發佈:2018-11-17
問題描述:
Android 端作為 Socket 服務端,Linux 端作為 Client 端,Android 端給 Linux 端
Android 側傳送資料程式碼:
public void sendMessage(final String msg){ Log.d(TAG, "即將傳送的資料 "+msg); // 傳送的資料為 {"info":"The gps switch is not on","status":"Failed"} new Thread(new Runnable() { @Override public void run() { if(outputStream!=null){ try { writer= new DataOutputStream(outputStream); writer.writeUTF(msg); // 寫一個UTF-8的資訊 writer.flush(); //outputStream.write(msg.getBytes()); } catch (IOException e) { e.printStackTrace(); // 傳送訊息失敗 } } } }).start(); }
傳送的資料為 :
{“info”:“The gps switch is not on”,“status”:“Failed”}
但是對方收到的資料為:
7{“info”:“The gps switch is not on”,“status”:“Failed”}
首部都會莫名奇妙的出現一個數字或者冒號;
出現原因:
編碼問題,我Android 端傳送編碼為 UTF-8
writer.writeUTF(msg); // 寫一個UTF-8的資訊
所以換成其它方式傳送
writer.writeBytes(msg);
問題解決,特此記錄;