|
|
1
19
|
|
|
2
10
艾迪
said
(比我早几秒!:),关闭写入程序和/或读取器将关闭底层套接字流
and the socket itself
你不应该关闭作者或读者。只需刷新书写器,以确保您的消息将及时到达。稍后关闭套接字将关闭相应的流,因此您无需自己关闭它们。只需将读写器对象留给GC即可。 |
|
|
3
5
另一种选择是创建一个NoCloseInputStream和NoCloseOutputStream过滤器,这些过滤器在关闭时什么也不做;然后使用它们包装应用程序套接字的流(在像缓冲区一样包装任何应用程序之前)。 请注意,如果要执行此操作,则需要保留对套接字(或包装流)的引用,以便在实际使用套接字时关闭它。 要回答“这对于OP来说太高级了”的评论:OP的问题是,在关闭顶级流时,他也关闭了底层套接字,但这是不好的,因为他想在套接字上创建更多的顶级流来发送更多的消息。根据他的体系结构,实现这一点的唯一方法可能是将流包装在NoClose包装器中——例如,他可能将流传递给XML序列化器或反序列化器,该序列化器或反序列化器在完成时关闭流,而关闭不在他的控制范围内。 |
|
|
4
2
您需要在关闭流之后关闭套接字。 |