java - BufferedReader.lines().foreach() 永远不会终止

标签 java java-io java-8 java-stream

我正在尝试从 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/

相关文章:

java - 这个serialVersionUID是通用版本标识符吗?

java - Java 8 中的 lambda 表达式是否执行多线程?

java - 排序行为不同?

Java 8 Stream API toMap 转换为 TreeMap

java - Libgdx 无法加载纹理问题

java - 在 Java 中按交集后的特定属性对对象列表进行排序

java - Xuggler:IContainer.open() block

java - 使用 java.io.File 时出现 NullPointerException

java - 模拟 OutputStream#flush 方法

java - 使用 Flying Saucer 的 PDF 标题后的巨大空白