我正在尝试从 Bufferedreader 读取 HTTP 请求,该请求得到 Socket.getInputStream()
作为输入。但是,当我使用Bufferedreader.lines().foreach()
时,它永远不会终止,只是卡住了。
我的代码(简化):
Socket socket = new ServerSocket(9090);
Socket newConnection = socket.accept();
BufferedReader reader = new BufferedReader(new InputStreamReader(newConnection.getInputStream()));
reader.lines().forEach(s -> System.out.println(s));
最佳答案
您需要阅读有关 HTTP 1.1 协议(protocol)的更多信息。请求不会在流结束时终止。它们通过耗尽内容长度 header 中的字节计数或累积 block (如果正在使用分块传输模式)来终止。如果它们在流结束时耗尽,您将永远无法发送响应。
关于java - BufferedReader.lines().foreach() 永远不会终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22805923/