馬上加入Android 台灣中文網,立即免費下載應用遊戲。
您需要 登錄 才可以下載或查看,沒有帳號?註冊
x
我一直在研究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之後出現錯誤了
可是我不知道怎麼修正
請問版上有人有研究這方面的嗎? |