【发布时间】:2012-07-08 14:28:48
【问题描述】:
我已经编写了从客户端套接字发送/接收数据的代码。发送数据步骤已成功完成,但是当我想从套接字读取数据时,readLine() 方法在没有数据可读取时阻塞程序。
这是我的代码:
StringBuffer document = new StringBuffer();
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null)
document.append(line + "\n");
reader.close()
谢谢大家 我可以读取所有接收到的数据,但是 readLine 或 read(byte[], int, int) 方法在没有数据要读取时会阻塞程序,而此时此方法必须返回 null/-1。
【问题讨论】:
-
您是否在交换基于字符的行格式数据?当没有足够的数据可用于构建下一行时,您希望 readLine() 做什么(如果不是阻塞)?
-
我尝试使用 read(byte[], int, int) 读取字节,但它再次阻塞。我很奇怪,为什么 read() 在没有数据时阻塞。跨度>