EOFException в readUTF

Я получаю ниже EOFException при использовании readUTF() метод, пожалуйста, дайте мне знать, как я могу решить эту проблему, а также, пожалуйста, предложите, как readUTF() передает информацию о сокете по другим сетям

import java.io.*;
import java.net.*;

public class GreetingServer {
    public static void main(String args[]) {
        String servername =args[0];
        int port = Integer.parseInt(args[1]);

        try {
            System.out.println("Server Name "+ servername +"Port"+port);

            Socket client = new Socket(servername,port);
            System.out.println("Just connected to"+ client.getRemoteSocketAddress());
            OutputStream outs = client.getOutputStream();
            DataOutputStream dout = new DataOutputStream(outs);
            dout.writeUTF("Hello From"+client.getRemoteSocketAddress());
            InputStream in = client.getInputStream();
            DataInputStream din = new DataInputStream(in);
            System.out.println("Server Says"+ din.readUTF());
            client.close();
        }
        catch (EOFException f) {
            f.printStackTrace();
        }
        catch(IOException e) {
            e.printStackTrace();
        }
    }
}

2 ответа

Вы достигли конца потока. Больше нет данных для чтения.

Возможно, ваш сервер не использует writeUTF(), или вы не синхронизированы с ним. Если сервер пишет строки, вы должны использовать BufferedReader.readLine().

Документы для readUtf() государство;

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

Это говорит мне о том, что то, что вы пытаетесь прочитать с помощью readUtf(), не является UTF, так как EOFException происходит, когда конец файла (EOF) читается неожиданно.

Убедитесь, что вы читаете правильные типы в том же порядке, в котором ваш сервер отправляет их и т. Д. Вы должны следовать определенному протоколу, а не читать вслепую.

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