Непрерывное чтение объектов из ObjectInputStream в Java

У меня проблема с использованием ObjectInputStream, и я борюсь с ним в течение 2 дней. Я пытался найти решение, но, к сожалению, не нашел подходящего ответа.

Я пытаюсь написать клиент-серверное приложение, в котором клиент отправляет объекты (в данном случае класс конфигурации) на сервер. Идея состоит в том, что соединение остается активным после отправки объекта, поэтому при необходимости можно отправить новый объект.

Вот важные части моего клиентского кода:

mSocket = new Socket("192.168.43.56", 1234);

mObjectIn = new ObjectInputStream(mSocket.getInputStream());
mObjectOut = new ObjectOutputStream(mSocket.getOutputStream());

mObjectOut.writeObject(stubConfig);
mObjectOut.flush();

В приведенном выше коде я пропустил несколько блоков try / catch, чтобы код был читабельным для вас.

Сторона сервера выглядит следующим образом:

mHostServer = new ServerSocket(port);
mSocket = mHostServer.accept();

// create streams in reverse oreder
mObjectOut = new ObjectOutputStream(mConnection.getOutputStream());
mObjectOut.flush();
mObjectIn = new ObjectInputStream(mConnection.getInputStream());

while (mIsSocketConnected)
{
    StubConfig = (StubConfiguration)mObjectIn.readObject(); 
}

Чего я хочу добиться, так это того, что, пока соединение с сокетом живо, сервер ожидает входящие объекты конфигурации.

Однако, когда я запускаю свою программу, я получаю EOFException в цикле while на стороне сервера. Я получаю первый объект конфигурации без каких-либо проблем в первой итерации цикла while, но после этого я получаю EOFException каждый раз, когда вызывается readObject ().

Я ищу способ решить эту проблему. Кто-нибудь может направить меня в правильном направлении?

РЕДАКТИРОВАТЬ: То, что я прочитал об EOFException, это то, что он выбрасывается, когда вы хотите читать из потока, когда достигнут конец этого. Это означает, что по какой-то причине поток завершился после отправки объекта. Есть ли способ реинициализировать потоки или около того ??

Ответы на вопрос(3)

Ваш ответ на вопрос