Мне нужно изменить поток потока через runtime. Во-первых, мне нужно использовать ObjectStreams:изменить поток на java-сокет
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.
Закрыть поток после выполнения всех операций. –