java – 当套接字关闭时,是否有必要关闭从套接字IO流创建的输入/输出流?

前端之家收集整理的这篇文章主要介绍了java – 当套接字关闭时,是否有必要关闭从套接字IO流创建的输入/输出流?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
private val in = new BufferedReader(new InputStreamReader(con.getInputStream()))
  private val out = new PrintWriter(con.getOutputStream(),true)
  try {
    while (true) {
      if (in.readLine() == null)
        throw new IOException("connection reset by peer")
    }
  } catch {
    case e: Exception =>
  } finally {

    // Is this necessary?
    in.close()
    out.close()

    // Close socket
    con.shutdownInput()
    con.shutdownOutput()
    con.close()
  }

如果从套接字的输入或输出流创建任何IO流或读/写器,是否需要在套接关闭之前或之后关闭它们?

解决方法

If any IO streams or reader/writers is created from socket’s input or output stream,is it necessary to close them before or after socket is closed?

您应该关闭套接输出流创建的最外面的OutputStream或Writer.这将刷新流并关闭套接字及其输入流.关闭套接字的任何其他方面,例如它的直接输出流,它的输入流或其周围的任何东西,或者套接字本身,完成了大部分但不是全部:特别是,在输出流之前关闭输入流在您的示例中,防止输出流被刷新,因此可能会丢失数据.

关闭之前立即调用shutdownInput()或shutdownOutput()始终是多余的.

原文链接:https://www.f2er.com/java/129457.html

猜你在找的Java相关文章