Java: EOFException в сети - PullRequest
       37

Java: EOFException в сети

1 голос
/ 21 июля 2011

Я новичок в сети и получаю EOFException, когда пытаюсь запустить MyClient.java .

MyServer.java

public class MyServer {
    public static void main(String[] args) {
        ServerSocket serverSocket = null;
        try {
            serverSocket = new ServerSocket(4321);
        } catch (IOException e) {
            e.printStackTrace();
        }
        while(true) {
            try {
                Socket socket = serverSocket.accept();
                OutputStream os =socket.getOutputStream();
                OutputStreamWriter osw = new OutputStreamWriter(os);
                BufferedWriter bw = new BufferedWriter(osw);
                bw.write("Hello networking");

                bw.close();
                socket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

MyClient.java

public class MyClient {
    public static void main(String[] args) {
        Socket socket = null;
        try {
            socket = new Socket("127.0.0.1", 4321);
            InputStream is = socket.getInputStream();
            DataInputStream dis = new DataInputStream(is);
            System.out.println(dis.readUTF());

            dis.close();
            socket.close();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (ConnectException e) {
            System.err.println("Could not connect");
        } catch (UTFDataFormatException e) {
            System.err.println("if the bytes do not represent a valid modified UTF-8 encoding of a string");
        } catch (EOFException e) {
            System.err.println("if this input stream reaches the end before reading all the bytes");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

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

Может ли кто-нибудь помочь мне понять, что мне не хватает? Я просто пытаюсь прочитать, что сервер пишет клиенту, когда он подключается, то есть Hello network .

Спасибо.

1 Ответ

1 голос
/ 21 июля 2011

проблема в коде вашего сервера вам следует использовать DataOutputStream.writeUTF (String str) для записи в сокет, если вы хотите прочитать его с помощью DataInputStream.

...