Java:网络中的 EOFException

标签 java networking io eofexception

我是网络新手,当我尝试运行 MyClient.java 时收到 EOFException。

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() 调用引起的。

有人可以帮助我理解我错过了什么吗?我正在尝试读取服务器在连接时写入客户端的内容,即Hellonetworking

谢谢。

最佳答案

问题出在您的服务器代码中 如果您想使用 DataInputStream 读取套接字,则应该使用 DataOutputStream.writeUTF(String str) 写入套接字。

关于Java:网络中的 EOFException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6769206/

相关文章:

java - 扫描仪在使用 next() 或 nextFoo() 后跳过 nextLine()?

java - Java中通过Jgit忽略文件或文件夹

java - 在匿名内部类中使用最终对象会导致 null

java - 你如何从 session 中读取语言环境信息?

Java 菜鸟需要澄清奇怪的重载方法问题

java - 如何使用 Java 通过网络将文件从一台计算机传输到另一台计算机?

c# - 如何使用 C# 获取 IP 地址的物理 (MAC) 地址?

java - 类 FileReader 中的构造函数 FileReader 不能应用于给定类型;

c# - Kinect 字节流太大

c++ - 简单的 I/O 操纵器未按预期工作