Android 台灣中文網

標題: Android socket datainputstream 的資料接收不正常 [打印本頁]

作者: kansas73    時間: 2015-4-30 10:17
標題: Android socket datainputstream 的資料接收不正常
我一直在研究socket的實作
我現在有一個client端
可以建立socket,程式碼如下:
  1. try {
  2.                                 socket = new Socket("192.168.0.110", 8080);//建立socket,手機對手機,測試程式                       
  3.                                 dataOutputStream = new DataOutputStream(socket.getOutputStream());//and stream                                                               
  4.                                 dataInputStream = new DataInputStream(socket.getInputStream());       
  5.                         }catch (IOException e) {               
  6.                         }
複製代碼

然後我按下按鈕可以傳送我要的byte給伺服器端,而伺服器端會回傳一個回應的byte給我
像是:

  1. byte[] byte = new byte[18];
  2. String s1;
  3. String AckOK="80";
  4. try {
  5.                                         byte[] buf=new byte[1];
  6.                                         buf[0]=(byte) 0x80;  
  7.                                         dataOutputStream.write(buf);
  8.                                         dataOutputStream.flush();
  9.                                         dataInputStream.readFully(byte);
  10.                                         s1 = new String(byte);                       
  11.                                         if(s1.equals(AckOK))
  12.                                     {
  13.                                             txt_ans.setText("ON");
  14.                                     }else if(s1.equals(AckERROR)){
  15.                                             txt_ans.setText("Power ON ERROR");
  16.                                     }
  17.                          }catch(Exception obj){       
  18.                          }                   
複製代碼

我將byte轉成string在顯示出來,這是正常的
我在按下另外一個按鈕傳送另一段指令給伺服器端時,這時候應該會回傳同樣的回應的byte給我,
可是這時候卻得到不正常的byte,
例如s1應該顯示為  80 可是卻顯示成好多的空格然後在手機畫面上換行才顯示80
求證後發現  無法判斷成s1.equals(AckOK)
我看伺服端的部分有正確的動作,所以回應應該也是對的
但是我接收端接收下來的資料卻是錯了

我覺得是 第一次從datainputstream裏頭得到的資料放在byte裡面是正確的
第二次再從datainputstream裏頭得到的資料 放進byte之後出現錯誤了
可是我不知道怎麼修正
請問版上有人有研究這方面的嗎?




歡迎光臨 Android 台灣中文網 (https://apk.tw/) Powered by Discuz! X3.1