Jump to content

Transferência de objectos por UDP - java.io.EOFException


Luigi
 Share

Recommended Posts

Estou a fazer transferência de dados através do protocolo udp. Classes: DatagramSocket e DatagramPacket.

O Servidor vai recolher dados do tipo List e mete numa variável Object que posteriormente mete num array de bytes e envia para o cliente.

Essa lista pode ser uma List<Tarefa> ou List<Actor>.

O cliente ao receber os dados do tipo byte[] tenho de os passar para object. A função usada para isso é:

public Object toObject(byte[] bytes) throws InterruptedException {
        Object obj=new Object();
        try {
            ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
            ObjectInputStream ois = new ObjectInputStream(bis);
            obj = ois.readObject();
            ois.close();
            bis.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
        }
        return obj;
    }

Na linha "obj = ois.readObject();" dá-me o erro java.io.EOFException.

O grande problema que o erro que aparece não acontece à primeira tentativa de comunicação com o servidor. Ocorre especificamente quando recebeu primeiro uma List<Actor> e depois uma List<Tarefa>.

Se quiserem o StackTrace posso meter.

Link to comment
Share on other sites

A documentação do ObjectInputStream sugere que se acaba o stream de forma inesperada, irá lançar uma EOFException. Vem-me à cabeça que tal vez estejas a enviar os pacotes todos juntos e que como les so um de cada vez, o resto perde-se ao fechar a ligação, e ao iniciar outra vez a ligação, a fila ja não tem nenhum seguinte...?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.