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,但是,当我用套接字创建另一个输入/输出流时,这会引发异常。
此时我有什么误解或遗失的东西吗?
答案 0 :(得分:8)
套接字上的连接只有一个InputStream
和一个OutputStream
。只要您关闭其中任何一个(或Socket
本身),连接就会自动关闭。您需要存储您需要的流并使用它们,每次需要时都无法从同一Socket
获取它们。