java.io.StreamCorruptedException: invalid stream header: 异常

来源:互联网 发布:越南语发音翻译软件 编辑:程序博客网 时间:2024/05/19 11:48

使用java的对象流出现java.io.StreamCorruptedException: invalid stream header异常

原因是数据发送端发送对象到接收端

接收端对于同一个输入流创建了不同的对象输入流,而后用不同的对象输入流进行接收

下面模拟异常的发送

传输的对象:

public class User implements Serializable{private String name;private int age;public User(String name, int age){this.name = name;this.age = age;}public String GetName(){return this.name;}public int GetAge(){return this.age;}}

客户端程序:

public class Client {public static void main(String[] args) throws Exception {Socket client = new Socket("127.0.0.1", 1234);ObjectOutputStream objOutput = new ObjectOutputStream(client.getOutputStream());//用同一输出流发送两个对象User user = new User("小明", 20);objOutput.writeObject(user);User user1 = new User("小红", 10);objOutput.writeObject(user1);client.close();}}

服务端:

public class Server {public static void main(String[] args) throws Exception {// TODO Auto-generated method stubServerSocket serverSocket = new ServerSocket(1234);System.out.println("start. . .");Socket clientSocket = serverSocket.accept();//用clientSocket的输入流创建对象输入流objInputObjectInputStream objInput = new ObjectInputStream(clientSocket.getInputStream());User user = (User)objInput.readObject();System.out.println(user.GetName());System.out.println(user.GetAge());//用clientSocket的输入流创建对象输入流objInput2ObjectInputStream objInput2 = new ObjectInputStream(clientSocket.getInputStream());user = (User)objInput2.readObject();System.out.println(user.GetName());System.out.println(user.GetAge());clientSocket.close();serverSocket.close();}}

服务端用网络输入流创建了两个不同的对象输入流,这时就会产生异常,如果用同一个对象输入流接收就不会产生。


阅读全文
0 0
原创粉丝点击