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

作者: SuperEel (尖頭鰻)   2016-03-30 22:54:34
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裡
想請問一下各位大大
哪邊有問題呢??
作者: abccbaandy (敏)   2016-03-30 23:15:00
你server沒傳東西吧?
作者: SuperEel (尖頭鰻)   2016-03-30 23:16:00
如果沒傳的話,卡在那邊是正常的嗎?
作者: abccbaandy (敏)   2016-03-30 23:16:00
印象中readLine會等讀到資料才會往下跑
作者: jacky75113 (crazydream)   2016-03-30 23:55:00
改用read()呢 readline似乎都會這樣
作者: y3k (激流を制するは静水)   2016-03-31 00:12:00
readLine是確定對方是傳文件才會穩 不然很容易卡在那邊建議你改用read(byte[] buffer)
作者: tctzzz (tctzzz)   2016-03-31 19:17:00
之前遇過readline 第一個封包收不到,會等到第二個把第一個擠下來,然後在4.x會,5.x以上不會= =

Links booklink

Contact Us: admin [ a t ] ucptt.com