读书人

PrintWriter 种中println和write方法的

发布时间: 2012-12-27 10:17:10 作者: rapoo

PrintWriter 类中println和write方法的区别

问题:编写Socket聊天软件,使用PrintWriter类取得Socket对象的输出流,使用println和write两个方法来完成向输出流中写出,用println没有问题,但是用write没有反应,即写出去后,对方读不到。

?

Google查了一下,问题解释如下:

?

为什么客户端调用了write()和flush()后,服务器端依然read不到数据。因为socket.getOutputStream()取到的实现类是java.net.SocketOutputStream,这个类并没有覆写flush方法,它的父类java.io.FileOutputStream也没有覆写,于是最终就调到了最顶层java.io.OutputStream的flush()方法,这就恶心了,这个方法是空的PrintWriter 种中println和write方法的区别。于是...

因此,还是使用Reader.readLine()和Writer.println()来处理socket吧,或者直接使用NIO。

(注意,SocketOutputStream类在JavaDoc中不存在,只在源码中有,他是个受保护的类。)

读书人网 >编程

热点推荐