我编写了从客户端套接字发送/接收数据的代码.发送数据步骤已成功完成,但是当我想从套接字读取数据时,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()
Run Code Online (Sandbox Code Playgroud)
感谢所有我可以读取所有收到的数据,但readLine或read(byte [],int,int)方法在没有数据要读取时阻塞程序,而此方法必须在此时返回null/-1.
那是因为该readLine()函数是一个阻塞调用,所以当然它会阻塞.
为了更具建设性,对类似方法的调用readLine()应该在一个单独的线程中,以便阻塞调用不会影响代码的其余部分.从正在阅读的类中,我建议创建一个纯粹用于控制从套接字读取的线程.
我将传递对创建类的引用,以便在线程接收信息时,父类可以使用它.
| 归档时间: |
|
| 查看次数: |
3863 次 |
| 最近记录: |