我有一个插槽和四流创造出来的:关闭套接字
InputStream
OutputStream
ObjectInputStream
ObjectOutputStream
什么我需要做的关闭与插座一起的所有流?我认为关闭插座就足够了,但我已经得到EOFExceptions
...
代码越少越好。
更多关于这个问题:
我打开一个连接并发送UTF串trought对象流。它的内容在服务器上启动了不同的协议。当协议执行时,服务器等待一个新的UTF字符串。
在一个点上,客户端执行:
objectOutputStream.writeUTF("terminate");
objectOutputStream.flush(); //Is this even necessary?
socket.close();
在服务器端,这样的事情发生了:
String command = objectInputStream.readUTF();
if (command.equals("terminate")
{
socket.close();
}
//socket is not accessed after this point, until a new conenction is established
//(when socket and everything is reinitialized)
关闭套接字之后除了例外之外,您还期待什么? – bmargulies
当你关闭套接字时,你也关闭了/从这些套接字的流。如果您尝试在闭合的流(关闭的套接字)上执行操作,则应该获得异常和/或EOF。 –
如果你用'BufferedOutputStream'包装它,你可以跳过'.flush()'。而且,由于您正在为您的流使用“Decorator”模式,因此您可以关闭最外层。 –