套接字关闭与输入流关闭

时间:2012-01-11 13:00:50

标签: java sockets inputstream outputstream

C类扩展线程

static Queue<Socket> socketQueue
Make connection to another server or client
And then add socket to socketqueue

A类扩展线程

method a
bufferedinputstream bis = socketQueue.poll
Do work
Make bis null without closing it<br>

B类扩展线程

Method b
Bufferedinputstream bis = socketqueue.poll
Do work
Make bis null without closing it

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

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

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

此时我有什么误解或遗失的东西吗?

1 个答案:

答案 0 :(得分:8)

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