Ler objetos continuamente de um ObjectInputStream em Java

Estou com um problema ao usar um ObjectInputStream e estou lutando com ele há 2 dias. Tentei procurar uma solução, mas infelizmente não encontrei uma resposta adequada.

Estou tentando escrever um aplicativo cliente / servidor no qual o cliente envia objetos (neste caso, uma classe de configuração) para o servidor. A idéia é que a conexão continue ativa após o envio do objeto, para que seja possível enviar um novo objeto, se necessário.

Aqui estão as partes importantes do meu código de cliente:

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

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

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

No código acima, deixei de fora alguns blocos try / catch para manter o código legível para você.

O lado do servidor tem a seguinte aparência:

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(); 
}

O que eu quero alcançar é que, enquanto a conexão do soquete estiver ativa, o servidor estiver escutando os objetos de configuração recebidos.

No entanto, quando executo meu programa, recebi uma EOFException no loop while do lado do servidor. Eu recebo o primeiro objeto de configuração sem problemas na primeira iteração do loop while, mas depois disso recebo uma EOFException toda vez que readObject () é chamado.

Eu estou procurando uma maneira de resolver isso. Alguém pode me colocar na boa direção?

EDIT: O que eu li sobre a EOFException é que ela é lançada quando você deseja ler de um fluxo quando o final é atingido. Isso significa que, por algum motivo, o fluxo terminou após o envio do objeto. Existe uma maneira de reinicializar os fluxos ou mais?

questionAnswers(3)

yourAnswerToTheQuestion