EOFException при отправке ObjectOutputStream

Я пытаюсь отправить пустой TCP-пакет на сервер, работающий через порт 80, однако при ответе сервера появляется исключение EOFException.

java.io.EOFException в java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2624) в java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:3099) в java.io.ream.OjectInput Java:853) в java.io.ObjectInputStream.(ObjectInputStream.java:349) в me.adamstephenson.test.main.main(main.java:106)

ArrayList<String> results = getIPs();

    for (String ip : results){
        System.out.println(ip);

        String pingip = ip;
        pingip = pingip.replaceAll("[^\\d.]", "");
        System.out.println(pingip);

        Socket socket = null;
        ObjectOutputStream oos = null;
        ObjectInputStream ois = null;
        try {
            socket = new Socket(pingip, 80);
            oos = new ObjectOutputStream(socket.getOutputStream());

            ois = new ObjectInputStream(socket.getInputStream());  // error here

            String msg = "blank";
            oos.write(msg.getBytes());
            oos.flush();

            //read the server response message
            String message = (String) ois.readObject();

            System.out.println(message);

            ois.close();
            oos.close();
            socket.close();
        } catch (ConnectException | EOFException e) {
            System.out.println("Failed to connect to: "+pingip);
            e.printStackTrace();
        }


    }

Означает ли EOFException, что ответ был пустым?

1 ответ

Решение

Это означает, что сервер даже не создал ObjectOutputStream перед закрытием розетки. Возможно, вы отправили ему что-то, чего он не понимал, и, возможно, протокол приложения, который он использует, вообще не включает сериализацию.

Порт 80 зарезервирован для HTTP в конце концов.

Другие вопросы по тегам