Server:
public class server {
public static void main(String[] args) throws UnknownHostException, IOException {
ServerSocket server = new ServerSocket(8888);
while(true) {
Socket client = server.accept();
BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream()));
String str;
while(null != (str = br.readLine())){
System.out.println(str+str.isEmpty());
}
}
}
}
Client:
public class client {
public static void main(String[] args) throws UnknownHostException, IOException, InterruptedException {
Socket client = new Socket("127.0.0.1",8888);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
bw.write("efasdfa\r\n");
bw.write("\r\n");
bw.flush();
bw.close();//close后readLine才返回null
}
}
结果:
efasdfafalse
true
结论:
- BufferedReader类中的readLine()方法,在遇到\r或\n是返回该行字符串
- 返回不包含\r\n
- 如果该行为空,如http响应中响应头和响应实体之间的空行,返回的是空字符串,即 readLine().isEmpty()为true、readLine()==”“为true
- 遇到输入流中的close(),readLine()返回null,如没有close,报Connection reset异常