Непрерывное чтение объектов из 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, это то, что он выбрасывается, когда вы хотите читать из потока, когда достигнут конец этого. Это означает, что по какой-то причине поток завершился после отправки объекта. Есть ли способ реинициализировать потоки или около того ??