EOFExcepttion при создании ObjectInputStream в Android - PullRequest
0 голосов
/ 02 мая 2020

У меня есть настройка клиента сервера. Я отправляю объект с клиента на сервер и затем читаю его обратно с сервера. Но я продолжаю получать EOFExcepttion, и это тоже не во время readObject, а при создании ObjectInputStream.

private class ClientTask extends AsyncTask<Message, Void, HashMap>{
    @Override
    protected HashMap doInBackground(Message... messages) {
        Message message = messages[0];
        HashMap reconcileMap = new HashMap();
        try {
            Socket socket = new Socket(InetAddress.getByAddress(new byte[]{10, 0, 2, 2}), message.port*2);
            ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
            ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
            oos.writeObject(message);
            oos.flush();

            reconcileMap = (HashMap) ois.readObject();

        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (StreamCorruptedException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return reconcileMap;
    }
}

Я получаю эту ошибку:

java.io.EOFException
05-02 15:23:10.084 27843-27857/? W/System.err:     at libcore.io.Streams.readFully(Streams.java:83)
05-02 15:23:10.084 27843-27857/? W/System.err:     at java.io.DataInputStream.readShort(DataInputStream.java:152)
05-02 15:23:10.084 27843-27857/? W/System.err:     at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:2063)
05-02 15:23:10.084 27843-27857/? W/System.err:     at java.io.ObjectInputStream.<init>(ObjectInputStream.java:372)
05-02 15:23:10.084 27843-27857/? W/System.err:     at edu.buffalo.cse.cse486586.simpledynamo.SimpleDynamoProvider$Reconcile.doInBackground(SimpleDynamoProvider.java:520)
05-02 15:23:10.084 27843-27857/? W/System.err:     at edu.buffalo.cse.cse486586.simpledynamo.SimpleDynamoProvider$Reconcile.doInBackground(SimpleDynamoProvider.java:511)
05-02 15:23:10.084 27843-27857/? W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:288)
05-02 15:23:10.084 27843-27857/? W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
05-02 15:23:10.084 27843-27857/? W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
05-02 15:23:10.084 27843-27857/? W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
05-02 15:23:10.084 27843-27857/? W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
05-02 15:23:10.084 27843-27857/? W/System.err:     at java.lang.Thread.run(Thread.java:841)

Даже если я удалю строку ois.readObject (), я все равно получу то же исключение. Кто-нибудь может мне помочь с этим?

...