通过尝试使用资源关闭套接字

Dav*_*ica 4 java sockets bufferedreader try-with-resources

我正在尝试编写一些具有以下基本形式的简单套接字代码 -

try(BufferedReader request = new BufferedReader(new InputStreamReader(sock.getInputStream()))){
//Do some work...
}
//BufferedReader gets closed, but also makes the socket close
...
...
response.write(blah);//Causes exception because socket is closed
Run Code Online (Sandbox Code Playgroud)

我的问题是套接字正在关闭,但我不认为它应该是.try-with-resources创建一个BufferedReader,然后在我离开try块时自动关闭它,但由于某种原因它也会关闭整个套接字!因此,当我稍后使用相同的套接字获得我的响应代码时,我得到一个异常.有没有什么办法解决这一问题?或者我只是不必使用try-with-resources(这将不太理想)?

Ste*_*lly 6

BufferedReader.close()关闭后备流.

解决方法是一个"包装"流,不传播close()

  • 在java运行时中没有.你需要自己写 (2认同)