作者SuperEel (尖头鳗)
看板AndroidDev
标题[问题] 关於Socket连线接收字串
时间Wed Mar 30 22:54:34 2016
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://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1459349679.A.0F8.html
1F:推 abccbaandy: 你server没传东西吧? 03/30 23:15
2F:→ SuperEel: 如果没传的话,卡在那边是正常的吗? 03/30 23:16
3F:→ abccbaandy: 印象中readLine会等读到资料才会往下跑 03/30 23:16
4F:→ SuperEel: 因为我是用WINDOWS的小程式传的,也不知道有没有传成功 03/30 23:16
5F:推 jacky75113: 改用read()呢 readline似乎都会这样 03/30 23:55
6F:→ y3k: readLine是确定对方是传文件才会稳 不然很容易卡在那边 03/31 00:12
7F:→ y3k: 建议你改用read(byte[] buffer) 03/31 00:12
8F:→ tctzzz: 之前遇过readline 第一个封包收不到,会等到第二个把第一 03/31 19:17
9F:→ tctzzz: 个挤下来,然後在4.x会,5.x以上不会= = 03/31 19:18