【发布时间】:2016-02-20 17:06:42
【问题描述】:
我需要在运行时更改我的套接字流。 首先我需要使用 ObjectStreams:
Socket socket = ...
InputStream networkInput = socket.getInputStream();
OutputStream networkOutput = socket.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(networkOutput);
oos.flush();
ObjectInputStream ois = new ObjectInputStream(networkInput);
//use the object-streams
那我需要换个其他的流
oos.close();
ois.close();
XYOutputStream xyos = new XYOutputStream(networkOutput);
xyos.flush();
XYInputStream xyis = new XYInputStream(networkInput);
但是如果我使用上面的代码,套接字就会关闭并且我得到一个
java.net.SocketException: Socket closed
如果我使用
socket.shutdownInput();
socket.shutdownOutput();
而不是关闭旧的流我得到一个
java.net.SocketException: interrupted data transfer (broken pipe)
当我尝试初始化我的 XYStreams 时。
【问题讨论】:
-
完成所有操作后关闭流。