java – 当套接字关闭时,是否有必要关闭从套接字IO流创建的输入/输出流?
发布时间:2020-05-24 12:22:55 所属栏目:Java 来源:互联网
导读:private val in = new BufferedReader(new InputStreamReader(con.getInputStream())) private val out = new PrintWriter(con.getOutputStream(), true) try { while (true) { if (in.readLine() ==
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流或读/写器,是否需要在套接字关闭之前或之后关闭它们? 解决方法
您应该关闭从套接字输出流创建的最外面的OutputStream或Writer.这将刷新流并关闭套接字及其输入流.关闭套接字的任何其他方面,例如它的直接输出流,它的输入流或其周围的任何东西,或者套接字本身,完成了大部分但不是全部:特别是,在输出流之前关闭输入流在您的示例中,防止输出流被刷新,因此可能会丢失数据. 在关闭之前立即调用shutdownInput()或shutdownOutput()始终是多余的. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
