0

I'm trying to read a HTTP request from a Bufferedreader, that gets Socket.getInputStream() as input. However, when I use Bufferedreader.lines().foreach(), it never terminates and it just gets stuck.

My code (simplified):

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));
4

2 回答 2

4

您需要阅读有关 HTTP 1.1 协议的更多信息。请求不会在流结束时终止。它们通过耗尽 Content-length 标头中的字节数或在使用分块传输模式时的累积块来终止。如果它们在流结束时用尽,您将永远无法发送响应。

于 2014-04-02T08:56:29.337 回答
-2

尝试使用无参数构造函数创建套接字,并使用带有端口和超时参数的connect()方法。这将防止无休止的冻结。

于 2014-04-02T08:49:19.587 回答