从客户端用BufferedReader写出一个字符串之后, 再写出一个Object,
服务器读取字符串正常, 再把服务器socket的inputstream包装成ObjectInputString的时候报StreamCorruptedException错, 请各位大神指点具体错误代码:
java.io.StreamCorruptedException: invalid stream header: 73720004
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
at Test2.main(Test2.java:13)
服务器端代码:ServerSocket ss = new ServerSocket(6756);
Socket s = ss.accept();
InputStream ins = s.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(ins));
String str = br.readLine();
System.out.println(str);
ObjectInputStream bis = new ObjectInputStream(ins);
/* 上面的语句报 java.io.StreamCorruptedException: invalid stream header: 73720004 错 */
User user = (User)bis.readObject();System.out.println(user.name);
bis.close();
s.close();客户端代码:OutputStream outs = s.getOutputStream();
PrintWriter pw = new PrintWriter(outs, true);
pw.println("test");
ObjectOutputStream oos = new ObjectOutputStream(outs);
oos.writeObject(new User("hello"));
oos.close();
s.close();
以上代码直接在main方法中定义的
服务器读取字符串正常, 再把服务器socket的inputstream包装成ObjectInputString的时候报StreamCorruptedException错, 请各位大神指点具体错误代码:
java.io.StreamCorruptedException: invalid stream header: 73720004
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
at Test2.main(Test2.java:13)
服务器端代码:ServerSocket ss = new ServerSocket(6756);
Socket s = ss.accept();
InputStream ins = s.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(ins));
String str = br.readLine();
System.out.println(str);
ObjectInputStream bis = new ObjectInputStream(ins);
/* 上面的语句报 java.io.StreamCorruptedException: invalid stream header: 73720004 错 */
User user = (User)bis.readObject();System.out.println(user.name);
bis.close();
s.close();客户端代码:OutputStream outs = s.getOutputStream();
PrintWriter pw = new PrintWriter(outs, true);
pw.println("test");
ObjectOutputStream oos = new ObjectOutputStream(outs);
oos.writeObject(new User("hello"));
oos.close();
s.close();
以上代码直接在main方法中定义的
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;public class TcpServer
{
public static void main(String[] args) throws Exception
{
ServerSocket ss = new ServerSocket(5000);
Socket socket = ss.accept();
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
byte[] buffer = new byte[200];
int length = is.read(buffer);
System.out.println(new String(buffer, 0 ,length));
os.write("welcome".getBytes());
is.close();
os.close();
socket.close();
}
}import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;public class TcpClient
{
public static void main(String[] args) throws Exception
{
Socket socket = new Socket("127.0.0.1", 5000);
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
os.write("hello world".getBytes());
byte[] buffer = new byte[200];
int length = is.read(buffer);
System.out.println(new String(buffer, 0 ,length));
is.close();
os.close();
socket.close();
}
}
throws IOException, StreamCorruptedException
{
short s0 = bin.readShort();
short s1 = bin.readShort();
if (s0 != STREAM_MAGIC || s1 != STREAM_VERSION) {
throw new StreamCorruptedException(
String.format("invalid stream header: %04X%04X", s0, s1));
}
}
ObjectInputStream类的这个方法报错
bin是BlockDataInputStream类型的 可是我在源代码里没有找到这个类...
package com.csdn;
import java.io.Serializable;public class User implements Serializable
{
String name; public User(String name)
{
this.name = name;
}
}
2:运行结果
test
hello这个错误可能是楼主的User类的问题吧。
PS:BlockDataInputStream是ObjectInputStream的私有内部类,源码也是能看到的。
哥们 没有序列化的错误我还是能分清楚的
java.io.NotSerializableException: User
问题不是这个错误..
test
helloD:\笔记\day041>java Test3
test
Exception in thread "main" java.io.StreamCorruptedException: invalid stream head
er: 73720004
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
at Test3.main(Test3.java:13)D:\笔记\day041>java Test3
test
helloD:\笔记\day041>java Test3
test
Exception in thread "main" java.io.StreamCorruptedException: invalid stream head
er: 73720004
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
at Test3.main(Test3.java:13)D:\笔记\day041>java Test3
test
helloD:\笔记\day041>java Test3
test
Exception in thread "main" java.io.StreamCorruptedException: invalid stream head
er: 73720004
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
at Test3.main(Test3.java:13)D:\笔记\day041>java Test3
test
Exception in thread "main" java.io.StreamCorruptedException: invalid stream head
er: 73720004
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)