我有一個插槽和四流創造出來的:關閉套接字
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」模式,因此您可以關閉最外層。 –