套接字关闭与输入流关闭

han*_*cop 2 java sockets inputstream outputstream

类c扩展线程

static Queue<Socket> socketQueue
Make connection to another server or client
And then add socket to socketqueue
Run Code Online (Sandbox Code Playgroud)

类a扩展线程

method a
bufferedinputstream bis = socketQueue.poll
Do work
Make bis null without closing it<br>
Run Code Online (Sandbox Code Playgroud)

b类扩展线程

Method b
Bufferedinputstream bis = socketqueue.poll
Do work
Make bis null without closing it
Run Code Online (Sandbox Code Playgroud)

我确实使bufferedinput流为null,因为我不想关闭连接的套接字.几个帖子告诉我关闭输入/输出流也会关闭套接字.每当我使用带有套接字的输入/输出流时,如果它不为null,我通常会关闭流和套接字.

我在这里尝试做的是使套接字处于活动状态并在需要输入或输出流时重用,而无需再次连接.

我尝试了socket.shutdowninput和output,但是,当我使用套接字创建另一个输入/输出流时,这会引发异常.

在这一点上有什么我误解或遗失的吗?

Bom*_*mbe 9

套接字上的连接只有一个InputStream和一个OutputStream.一旦关闭其中任何一个(或Socket自身),连接就会自动关闭.您需要在某处存储所需的流并使用它们,Socket每次需要时都无法从中获取它们.