在网络编程中使用printwriter的write()方法和println()方法的区别

在利用socket套接字进行网络编程中,需要在客户端和服务端各自实现数据的读取和输出。数据的读取需要用到bufferedreader中的readline()方法,用于读取一行从对方传过来的数据。而数据的输出需要用到printwriter的println()的方法,用于将本方的文本数据传给对方。但是在printwriter中还有一个write()方法,其功能和println()方法类似,但不完全相同。从API文档中可以比较一下两者的功能介绍:
在网络编程中使用printwriter的write()方法和println()方法的区别
首先说明一点就是:在甲方使用readline()方法读取数据的情况下,乙方必须使用println()方法将数据传送过去,甲方也会读取到。而使用write()和print()方法则读取不到。原因是因为,println()方法在输出一段字符串的时候会在结尾处加上换行符作为结尾,而write()仅仅是输出一段字符串而已,后面没有跟着换行符。这时候就有必要看一下readline方法的执行原理,可以查看一下jdk中关于bufferedreader的readline方法的源代码:
在网络编程中使用printwriter的write()方法和println()方法的区别
红色方框是对这个方法功能的介绍,翻译过来就是:读取一行文本。一行被认为是以换行符\n或者回车符\r或者是\r\n其中任意一个作为终止符。也就说,如果文本在最后没有换行,readline()是不认为它是一行的。因此永远都读取不到。