馬上加入Android 台灣中文網,立即免費下載應用遊戲。
您需要 登錄 才可以下載或查看,沒有帳號?註冊
x
我想要寫一隻APP可以接收我從client丟出來的資料並且顯示
現在問題在於我只能顯示出我丟出的第一筆資料
而第二筆資料卻無法顯示出來,即使丟出第二筆還是只有顯示第一筆資料
- try{
- //建立serverSocket
- serverSocket = new ServerSocket(8080);
- //等待連線
- while (true) {
- //接收連線
- Socket client = serverSocket.accept();
- handler.post(new Runnable() {
- public void run() {
- test.setText("Connected.");//如果建立成功 顯示connected
- }
- });
-
- DataInputStream in = new DataInputStream(client.getInputStream());//取得dataoutputstream並放置於in
- while(in!=null){ //當in裡面有值的時候執行以下的動作
- //接收資料
- byte[] re = new byte[6];//先開個re的陣列大小為6
- in.read(re); //並把in讀進來放進re
- short tmp[] = {(short) (0xff & re[0]), //tmp負責處理我所丟過來的封包格式
- (short) (0xff & re[1]), //例如 傳送0x70在textview上則顯示70
- (short) (0xff & re[2]), //以此類推
- (short) (0xff & re[3]),
- (short) (0xff & re[4]),
- (short) (0xff & re[5]),};
- int ddata0,ddata1,ddata2,ddata3,ddata4,ddata5; //將處理完的封包格式放進來
- ddata0=tmp[0];
- ddata1=tmp[1];
- ddata2=tmp[2];
- ddata3=tmp[3];
- ddata4=tmp[4];
- ddata5=tmp[5];
- dd0=Integer.toHexString(ddata0); //格式轉換就不說明了
- dd1=Integer.toHexString(ddata1);
- dd2=Integer.toHexString(ddata2);
- dd3=Integer.toHexString(ddata3);
- dd4=Integer.toHexString(ddata4);
- dd5=Integer.toHexString(ddata5);
- handler.post(new Runnable() {
- public void run() {
- test2.setText(dd0+dd1+dd2+dd3+dd4+dd5);//最後在這邊讓test2這個textview顯示出來!
- }
- });
- }
- }
- }catch(IOException e){
- //以下如果有錯誤就顯示出建立失敗!!!!
- handler.post(new Runnable() {
- public void run() {
- test.setText("建立socket失敗");
- }
- });
- }
複製代碼
我竭盡所能地將我的code註解了一下
不知道我的理解有沒有錯誤!
我丟出來的資料是 0x70,0x60,0x50,0x40,0x30,0x20
那我再textview上面要顯示出 70 60 50 40 30 20
第一筆都能成功顯示,但第二筆就沒有辦法了
我自己有想過是否in裡面沒有資料(這也是版有給我的一些意見)
但是如果in沒有資料那第一筆資料也沒有辦法顯示吧...我是這麼想的不知道這個想法有沒有錯誤呢?
然後再來是後來我有在別的論壇上發問
他們是說in沒有改變所以...顯示都一樣
但我不知道要怎麼改變
不是只要丟出不同資料她會自己更新嗎?
麻煩版友們幫我解答了謝謝你們由衷感謝 |

|