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?