Я пытаюсь использовать поток сокетов для нескольких передач данных.
- для отправки
List<>
- для отправки текста
- ...
Могу ли я использовать только один сокет для отправки String
, который сообщает клиенту, какие данные следует ожидать, за которыми следуют ожидаемые данные (в данном случае List<>
)?
Вот то, о чем я думал:
//declarations
//outputs and inputs
private ObjectInputStream input;
private ObjectOutputStream output;
private OutputStream checkStatus;
private PrintWriter out;
...
private void forwardMessage(List<User> clients) throws IOException {
checkStatus = client.getOutputStream();
out = new PrintWriter(new OutputStreamWriter(checkStatus), true);
out.println("Command Option 1");
client.shutdownOutput();
output = new ObjectOutputStream (client.getOutputStream());
for (int i = 0; i < clients.size(); i++) {
output.flush();
output.writeObject(clients.get(i));
output.flush();
output.reset();
}
output.writeObject(null);
client.shutdownOutput();
}
Ошибка, выдаваемая при попытке это, "java.net.SocketException: Socket is closed
"
Я также пытался закрыть OutputStream, но это даеттот же результат.
Как я могу использовать только один потоковый сокет для нескольких передач данных?