Почему не работает команда в Java при работе с input?

Суть такова. Вот код:
try {
				
				connect = server.accept();
				output = new ObjectOutputStream(connect.getOutputStream());
				input = new ObjectInputStream(connect.getInputStream());
				output.writeObject("Сообщение получено! (" + input.readObject() + ")");
				System.out.println("Client write: " + (String)input.readObject());  //<----
				
			} catch (UnknownHostException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			} catch (HeadlessException e) {
				e.printStackTrace();
			} catch (ClassNotFoundException e) {
				e.printStackTrace();
			}

Почему выполняется команда output.writeObject("Сообщение получено! (" + input.readObject() + ")"); но последующая команда нет. (я показал её стрелочкой)
  • Вопрос задан
  • 2590 просмотров
Пригласить эксперта
Ответы на вопрос 1
Lure_of_Chaos
@Lure_of_Chaos
Программист
Надо, чтобы в input был записан второй Object.
Если Вы натравливаете два экз. приложения с этим кодом (т.е. читаете, потом пишете, потом ожидаете его получить), попробуйте output.flush() после output.writeObject

Также в таком случае (когда приложение является и сервером, и клиентом для себя же) имеет значение:
1. инициализация ObjectOutputStream перед ObjectInputStream
2. чтобы была запись writeObject перед чтением readObject, т.к. ObjectInputStream при инициализации ждет, что в него сразу начнут писать, иначе блокирует поток.

В любом случае, тут блокирующий ввод\вывод, так что Вам одним потоком не обойтись.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы