skip
skip

Reputation: 12643

Java: EOFException in networking

I am new to networking and I am getting an EOFException when I am trying to run the 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();
        }
    }
}

I get if this input stream reaches the end before reading all the bytes for the error and the error seems to arise from the dis.readUTF() call.

Could someone help me understand what am I missing? I am trying just trying to read what the server writes to the client when it gets connected, that is Hello networking.

Thanks.

Upvotes: 1

Views: 1008

Answers (1)

Boris Daich
Boris Daich

Reputation: 2461

the problem is in your server code you should use DataOutputStream.writeUTF(String str) to write to socket if you want to read it with the DataInputStream.

Upvotes: 1

Related Questions