[問題] android TCP socket 接收失敗

看板AndroidDev作者 (crazydream)時間11年前 (2014/02/11 09:19), 編輯推噓0(006)
留言6則, 3人參與, 最新討論串1/1
是這樣的 我現在要連一個tcp連線 server端目前是電腦 用C寫的 client端在android上 java寫成 用ap開wifi讓手機連wifi 資料傳出去是可以的 但是接收時input.readLine()會卡住 網路上google過 說readLine()要讀到'\n' '\r' '\r\n'之類的才會停止 否則會卡住 後來在要傳的字串裡加入這些符號依然沒有用 用wireshark監聽時字串也都有出現結尾 0a ,0d ,0a0d 而且同樣的方法把client端寫一個pc端的java程式是可以正常連線傳輸 但在android中則會卡在readLine() 我去google play下載 TCP Client也是可以跟server連線 所以一定是我哪邊沒寫好 以下是我擷取自己幾段程式碼 1.程式一開啟就會開socket class ClientThread implements Runnable { public void run() { try { socket = new Socket("169.254.2.3",8899); } catch (UnknownHostException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); }}} 2.當按下按鈕 會先傳字串給server 然接從server接收字串 public void onClick(View v) { try { // send EditText et = (EditText) findViewById(R.id.EditText01); String str = et.getText().toString(); PrintWriter out = new PrintWriter(new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true); out.println(str); //以上傳出去是正常的 //recv tv.setText("message 1"); BufferedReader input = new BufferedReader(new InputStreamReader(socket .getInputStream())); // read line(s) tv.setText("message 2"); String message = input.readLine(); // <--這裡卡住了 tv.setText(message); //以上只顯示出message 2 不知道沒有大大能解惑m(_ _)m -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.166.80.199

02/11 22:44, , 1F
如果用read()讀也會嗎? ((一個字元一個字元讀~
02/11 22:44, 1F

02/11 23:02, , 2F
恩恩 有試過也是會卡住
02/11 23:02, 2F
※ 編輯: jacky75113 來自: 218.166.88.51 (02/12 08:41)

02/12 12:30, , 3F
讓手機連ap的話,ip通常不會是169.254吧…
02/12 12:30, 3F

02/12 12:30, , 4F
看起來連線沒成功
02/12 12:30, 4F

02/12 13:34, , 5F
ip是自己設定的沒問題 我找到一個程式可以正常跑
02/12 13:34, 5F

02/12 13:35, , 6F
待我找出問題後再po個結果XD
02/12 13:35, 6F
文章代碼(AID): #1I-UikY3 (AndroidDev)