在网络编程中,实现客户端和服务器端的读写操作的时候一定要注意规范,就是读写的规定要统一!还要注意的是write()方法、print()和println()这三个方法的细小区别,的前提是读取使用的是bf.readLine()。
服务器代码:
客户端代码:
报错信息:
我调试了半天,都想不明白到底18行(上面蓝色行)bf.readLine()错在哪里,因为前面客户端已经能把字符串写进去,但是就是读不出来!问题的关键,读的这个bf.readLine()的格式是这样的:
Reads a line of text. A line is considered to be terminated by any one of a line feed (’\n’), a carriage return (’\r’), or a carriage return followed immediately by a linefeed.
翻译一下:
读取一行文本。行被认为是由换行符(’\n’)、回车符(’\r’)或紧跟换行符的回车符中的任何一个终止的。(意思就是说当bf.readLine()读取到 \n 或者 \r 的时候,代表数据读取完毕)
再看一下我们的写入的方法:
前面的write()方法和print()方法,写入字符后都没有换行符(’\n’)、回车符(’\r’)在末尾,导致使用bf.readLine()时候,因为无法读取到换行符(’\n’)、回车符(’\r’),所以无法读取写入的字符串!!
谨记:要想使用bf.readLine()读取数据,优先使用println()方法(因为自带换行符),否则记得在write()方法和print()方法的后面加上(’\n’)或者(’\r’)