我正在尝试从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));
答案 0 :(得分:4)
您需要阅读有关HTTP 1.1协议的更多信息。请求不会在流结束时终止。它们通过耗尽Content-length头中的字节数来终止,如果正在使用chunked传输模式,则终止累积块。如果他们在流的末尾用尽,你就永远无法发送回复。
答案 1 :(得分:-2)
尝试使用无参数构造函数创建套接字,并使用带有port和timeout参数的connect()方法。这样可以防止无休止的冻结。