我有一个应用程序,它使用简单的套接字在两个系统之间传递一些字符.我把我的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中维护此连接?
是的,关闭任何Writer/Reader将关闭他们包装的所有其他作家和读者.在准备好关闭底层套接字之前,请勿关闭它.
正如@Eddie 所说(在我之前几秒!)),关闭编写器和/或读取器将关闭底层套接字流和套接字本身:但是,我相信套接字本身不会被关闭.
关闭返回的InputStream将关闭关联的套接字.
你不应该关闭作家和读者.只需刷新编写器,确保您的邮件及时到达.稍后关闭套接字将关闭相应的流,因此您无需自己关闭它们.只需将读取器/写入器对象留给GC即可.