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 (C开发者_如何学PythononnectException 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.
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.
精彩评论