Java 如何从数据流中读取数据

Java 如何从数据流中读取数据,java,inputstream,datainputstream,data-stream,Java,Inputstream,Datainputstream,Data Stream,请帮助我了解如何读取java中的数据流。我的要求是使telnet连接到路由器。这一部分已经完成。从路由器,必须通过telnet使用其ip地址和端口号连接到xxx远程机器。在建立这种联系的同时,我得到了一些回应。但是在读取时,程序控件停止在InputStream类的read()方法。下面是我用来读取数据流的代码片段 buff = new byte[4*1024]; ret_read = 0; do { ret_

请帮助我了解如何读取java中的数据流。我的要求是使telnet连接到路由器。这一部分已经完成。从路由器,必须通过telnet使用其ip地址和端口号连接到xxx远程机器。在建立这种联系的同时,我得到了一些回应。但是在读取时,程序控件停止在InputStream类的read()方法。下面是我用来读取数据流的代码片段

        buff = new byte[4*1024];
        ret_read = 0;

        do
        {
           ret_read = in.read(buff); // Program control gets hanged here. Once all the data are read...
           if(ret_read > 0)
           {
               System.out.println(new String(buff,0,ret_read));

           }
        }while(ret_read > 0);

发生的情况是,读取正在阻塞并等待更多数据在流上发送,它将继续这样做,直到流关闭或发送更多数据


您需要使用非阻塞读取,在读取时设置超时,或者在流服务器端完成数据发送后关闭流服务器端。

等待更多数据读取。但是流中没有数据。那么如何从read()方法中出来呢?在尝试读取之前,您可以使用available()来查看是否存在任何内容,或者您可以使用非阻塞连接,例如套接字通道:谢谢Tim。但是InputStream类中的available()方法总是返回零。因此,我将尝试使用read()的非阻塞连接