Задать вопрос

Почему не работает команда в 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 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
Lure_of_Chaos
@Lure_of_Chaos
Программист
Надо, чтобы в input был записан второй Object.
Если Вы натравливаете два экз. приложения с этим кодом (т.е. читаете, потом пишете, потом ожидаете его получить), попробуйте output.flush() после output.writeObject

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

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

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

Похожие вопросы
Сбер Москва
от 300 000 до 350 000 ₽
DIGITAL SECTOR Краснодар
от 250 000 до 450 000 ₽
Сбер Санкт-Петербург
До 350 000 ₽