Java使用Socket获取的输入流,无法使用readLine()方法侦测到流末尾吗?

RT

BufferedReader的readLine方法是一次读一行的,这个方法是阻塞的,直到它读到了一行数据为止程序才会继续往下执行,那么readLine什么时候才会读到一行呢?直到程序遇到了换行符或者是对应流的结束符readLine方法才会认为读到了一行,才会结束其阻塞,让程序继续往下执行。所以我们在使用BufferedReader的readLine读取数据的时候一定要记得在对应的输出流里面一定要写入换行符(流结束之后会自动标记为结束,readLine可以识别),写入换行符之后一定记得如果输出流不是马上关闭的情况下记得flush一下,这样数据才会真正的从缓冲区里面写入。

具体例子请看这里:
http://haohaoxuexi.iteye.com/blog/1979837
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-11-01
readLine 是读一行,必需等待换行符号

关于服务器客户端之间的 while((str=br.readline())!=null){\/\/输出rea...
不能,因为这个流还存在,即使流中已经没有数据,但仍然可以继续写出和读入,那么程序自然会继续读流,而流真正的结束就是关闭

用java的Socket写的流服务端接收不到客户端发送的信息。
输出流写的方式不一致,输入流用的是readLine.是读带换行符的数据,而你的输出流是write,把write改成writeL¡ne就行了吧。

java socket编程 readline()读取问题,为啥在client端刚连接上就开始无限...
改一下 scan.nextLine();\/\/阻塞,排除是socket建立太慢导致的 String str=null;这两行删除,没用 str=br.readLine();这个改成 br=scan.readLine();然后你再试一下 顺便再说一下,这个程序我写过,我开始想的也是客户端发送的数据服务器端可以实时接收,但是我发现我错了,因为Scanner 的阻塞,如果客户...

java网络编程那个readLine()方法怎么没读到数据???
write之后flush了吗?有的时候你写入的东西太短,socket会做缓冲的,flush会强制将缓冲的字节发送出去。还有如果你用readLine读数据,记得给你用write发出去的内容里添加一个'\\n',要不readLine是会lock在readLine里面的,直到读取到一个'\\n'才会返回。

java socket输入流inputStream.read(byte[])方法一次读入多帧数据,也就...
以上情况可以这样实现:在服务端使用PrintWriter PrintWriter writer=new PrintWriter(socket.getOutputStream());writer.println(data);客户端可以使用BufferedReader BufferedReader reader=new BufferedReader(new BufferedInputStream(socket.getInputStream()));String s=reader.readLine();

java 的readLine()怎么进行的
readLine()是读取流读数据的时候用的,同时会以字符串形式返回这一行的数据,当读取完所有的数据时会返回null。代码示例:public static void main(String[] args) throws Exception { \/\/获取读取流 3 FileReader reader = new FileReader("C:\\\\Users\\\\杨华彬\\\\Desktop\\\\test.txt");BufferedReader br...

Java中有几种类型的流?
从输入流中读取字节 Int read();从输入流中顺序读取源中的单个字节数据,返回字节值(0~255之间的一个整数),如果到达源的末尾,则返回-1 Read方法还可以吧多个字节读入到字节数组中:Int read(byte b[]);Int read(byte b[],int off,int len);关闭流 使用close();FileOutputStream类 ...

用java读取一个软件已经获取到的数据
java都是通过流读取数据,这个问题首先你得告诉大家VC读取的数据存放在哪了,然后大家才能帮组你,希望把问题补全 VC获取数据不了解,给你提供下java从流里读取数据,看你能不能用上 如果VC可以将数据通过socket写到输出流里,那么下面的代码就能用上了 Socket client=new Socket(ip,port);\/\/和VC读取...

java socket 判断是否断开了
首先想到socket类的方法isClosed()、isConnected()、isInputStreamShutdown()、isOutputStreamShutdown()等,但经过试验并查看相关文档,这些方法都是本地端的状态,无法判断远端是否已经断开连接。然后想到是否可以通过OutputStream发送一段测试数据,如果发送失败就表示远端已经断开连接,类似ping,但是这样会...

浅谈Java中如何利用socket进行网络编程(一)
在Java中Socket可以理解为客户端或者服务器端的一个特殊的对象,这个对象有两个关键的方法,一个是getInputStream方法,另一个是getOutputStream方法。getInputStream方法可以得到一个输入流,客户端的Socket对象上的getInputStream方法得到的输入流其实就是从服务器端发回的数据流。GetOutputStream方法得到一...

相似回答