当前位置:  开发笔记 > 编程语言 > 正文

关闭BufferedReader/PrintWriter会关闭套接字连接吗?

如何解决《关闭BufferedReader/PrintWriter会关闭套接字连接吗?》经验,为你挑选了2个好方法。

我有一个应用程序,它使用简单的套接字在两个系统之间传递一些字符.我把我的java应用程序作为服务器运行.我建立一个连接很好,甚至传递一个消息.但是,在发送一条消息后,我的连接关闭.

从我可以看出它似乎在关闭时printWriter,bufferedReader套接字本身正在关闭?!这很糟糕,因为我有多条消息要在同一个连接上发送.

printWriter = new PrintWriter(theServer.getClientSocket().getOutputStream());
bufferedReader = new BufferedReader(new InputStreamReader(theServer.getClientSocket().getInputStream()));


printWriter.println("the line");

printWriter.close(); //Closing on these lines?
bufferedReader.close(); //Closing on these lines?

我满满的吗?如何在Java中维护此连接?



1> Eddie..:

是的,关闭任何Writer/Reader将关闭他们包装的所有其他作家和读者.在准备好关闭底层套接字之前,请勿关闭它.



2> Hosam Aly..:

正如@Eddie 所说(在我之前几秒!)),关闭编写器和/或读取器将关闭底层套接字流和套接字本身:但是,我相信套接字本身不会被关闭.

关闭返回的InputStream将关闭关联的套接字.

你不应该关闭作家和读者.只需刷新编写器,确保您的邮件及时到达.稍后关闭套接字将关闭相应的流,因此您无需自己关闭它们.只需将读取器/写入器对象留给GC即可.

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有