[問題] 關於Socket連線接收字串

看板AndroidDev作者 (尖頭鰻)時間9年前 (2016/03/30 22:54), 編輯推噓2(207)
留言9則, 5人參與, 最新討論串1/1
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.Socket; public class ClientThread extends Thread { private boolean m_bIsRuning; private Socket m_socket= null;;//和伺服器端進行連線 private BufferedWriter bw; //取得網路輸出串流 private BufferedReader br; //取得網路輸入串流 public ClientThread() { m_bIsRuning = true; } public void run() { super.run(); while(m_bIsRuning) { try { m_socket = new Socket("192.168.1.2",1234); bw = new BufferedWriter( new OutputStreamWriter(m_socket.getOutputStream())); br = new BufferedReader(new InputStreamReader(m_socket.getInputStream())); while(m_socket.isConnected()) { if(br.readLine() != null) System.out.println(br.readLine()); } bw.close(); br.close(); m_socket.close(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } 小弟我是這方面的新手 以上的我寫的範例程式 當我使用這個Thread時 如果下bw.write和bw.flush,電腦Server端是收的到的 但上面的程式碼跑到br.readLine()時就整個停住沒有往下跑, 也沒有進到exception裡 想請問一下各位大大 哪邊有問題呢?? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.195.118.121 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1459349679.A.0F8.html

03/30 23:15, , 1F
你server沒傳東西吧?
03/30 23:15, 1F

03/30 23:16, , 2F
如果沒傳的話,卡在那邊是正常的嗎?
03/30 23:16, 2F

03/30 23:16, , 3F
印象中readLine會等讀到資料才會往下跑
03/30 23:16, 3F

03/30 23:16, , 4F
因為我是用WINDOWS的小程式傳的,也不知道有沒有傳成功
03/30 23:16, 4F

03/30 23:55, , 5F
改用read()呢 readline似乎都會這樣
03/30 23:55, 5F

03/31 00:12, , 6F
readLine是確定對方是傳文件才會穩 不然很容易卡在那邊
03/31 00:12, 6F

03/31 00:12, , 7F
建議你改用read(byte[] buffer)
03/31 00:12, 7F

03/31 19:17, , 8F
之前遇過readline 第一個封包收不到,會等到第二個把第一
03/31 19:17, 8F

03/31 19:18, , 9F
個擠下來,然後在4.x會,5.x以上不會= =
03/31 19:18, 9F
文章代碼(AID): #1M--Yl3u (AndroidDev)