java.io.StreamCorruptedException:无效的流标头:32303530

问题描述

我正在做我们讲座中给出的练习。它涉及 ObjectInputStreams、ObjectOutputStreams 和 Serializations。这是我第一次遇到这些主题,而且我遇到了一个我似乎无法找到解决方法主题。这是给我们的示例程序。

客户端类:

public class SampleClient2 {
public static void main(String[] args) {
    try (
            ObjectInputStream fileRdr = new ObjectInputStream(new FileInputStream("res/students.dat"));
            Socket connection = new Socket("localhost",1234);
            ObjectInputStream reader = new ObjectInputStream(connection.getInputStream());
            ObjectOutputStream writer = new ObjectOutputStream(connection.getoutputStream());
    ) {
        List<Student> students = (ArrayList<Student>) fileRdr.readobject();
        // print and send the list object to server
        System.out.println("Data before sending to server:");
        printData(students);
        writer.writeObject(students);
        students = (ArrayList<Student>) reader.readobject();
        System.out.println("\n\nData after sending to server:");
        printData(students);
    } catch (Exception e) {
        e.printstacktrace();
    }
}

private static void printData(List<Student> students) {
    for (Student s : students) {
        System.out.printf("%7d %-35s %-5s %1d %-6s%n",s.getID(),s.getName(),s.getCourse(),s.getYr(),s.getGender());
    }
}}

服务器类:

public class SampleServer2 {
public static void main(String[] args) {
    try (
            ServerSocket clientConnection = new ServerSocket(1234);
            Socket clientSocket = clientConnection.accept();
            ObjectOutputStream writer = new ObjectOutputStream(
                    clientSocket.getoutputStream());
            ObjectInputStream reader = new ObjectInputStream(
                    clientSocket.getInputStream());
    ) {
        List<Student> students =
                (ArrayList<Student>) reader.readobject();
        Collections.<Student>sort(students,new Comparator<Student>() {
            public int compare(Student s1,Student s2) {
                return s1.getID() - s2.getID();
            }
            public boolean equals(Object o) {
                return false;
            }
        });
        writer.writeObject(students);
    } catch (Exception e) {
        e.printstacktrace();
    }
}}

学生班:

public class Student implements Serializable {

private int id;
private String name;
private String course;
private int yr;
private String gender;

public Student(int i,String n,String c,int y,String g) {
    id = i;
    name = n;
    course = c;
    yr = y;
    gender = g;
}

// accessor methods
public int getID() {
    return id;
}
public String getName() {
    return name;
}
public String getCourse() {
    return course;
}
public int getYr() {
    return yr;
}
public String getGender() {
    return gender;
}

// mutator methods
public void setID (int id) {
    this.id = id;
}
public void setID (String id) {
    this.id = Integer.parseInt(id);
}
public void setName(String n) {
    name = n;
}
public void setCourse(String c) {
    course = c;
}
public void setYr(int y) {
    yr = y;
}
public void setYr(String y) {
    yr = Integer.parseInt(y);
}
public void setGender(String g) {
    gender = g;
}}

students.dat 文件

3050206,"Young,Tim A.",BSBIO,3,Male
5090533,"Johnson,Simon Kyle T.",BSME,4,Female
4040862,"Reynolds,Anthony Ku",BSCE,2,Male
7010729,"Tzu,Shin A",BSARCH,Female

错误

java.io.StreamCorruptedException: invalid stream header: 32303530
at java.base/java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:911)
at java.base/java.io.ObjectInputStream.<init>(ObjectInputStream.java:350)
at pexer1.SampleClient2.main(SampleClient2.java:16)

~ 非常感谢有关这种情况如何发生/发生的任何帮助和/或解释。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)