Android 台灣中文網
標題:
Android socket datainputstream 的資料接收不正常
[打印本頁]
作者:
kansas73
時間:
2015-4-30 10:17
標題:
Android socket datainputstream 的資料接收不正常
我一直在研究socket的實作
我現在有一個client端
可以建立socket,程式碼如下:
try {
socket = new Socket("192.168.0.110", 8080);//建立socket,手機對手機,測試程式
dataOutputStream = new DataOutputStream(socket.getOutputStream());//and stream
dataInputStream = new DataInputStream(socket.getInputStream());
}catch (IOException e) {
}
複製代碼
然後我按下按鈕可以傳送我要的byte給伺服器端,而伺服器端會回傳一個回應的byte給我
像是:
byte[] byte = new byte[18];
String s1;
String AckOK="80";
try {
byte[] buf=new byte[1];
buf[0]=(byte) 0x80;
dataOutputStream.write(buf);
dataOutputStream.flush();
dataInputStream.readFully(byte);
s1 = new String(byte);
if(s1.equals(AckOK))
{
txt_ans.setText("ON");
}else if(s1.equals(AckERROR)){
txt_ans.setText("Power ON ERROR");
}
}catch(Exception obj){
}
複製代碼
我將byte轉成string在顯示出來,這是正常的
我在按下另外一個按鈕傳送另一段指令給伺服器端時,這時候應該會回傳同樣的回應的byte給我,
可是這時候卻得到不正常的byte,
例如s1應該顯示為 80 可是卻顯示成好多的空格然後在手機畫面上換行才顯示80
求證後發現 無法判斷成s1.equals(AckOK)
我看伺服端的部分有正確的動作,所以回應應該也是對的
但是我接收端接收下來的資料卻是錯了
我覺得是 第一次從datainputstream裏頭得到的資料放在byte裡面是正確的
第二次再從datainputstream裏頭得到的資料 放進byte之後出現錯誤了
可是我不知道怎麼修正
請問版上有人有研究這方面的嗎?
歡迎光臨 Android 台灣中文網 (https://apk.tw/)
Powered by Discuz! X3.1