Я пытаюсь использовать поток сокетов для нескольких передач данных.Несколько выходов на сокете
- для отправки
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, но это дает тот же результат.
Как я могу использовать только один поток-сокет для нескольких передач данных?
почему client.shutdownOutput(); перед getOutputStream()? – kosa