我有一个我不太明白的问题。我在两台不同的机器上有一个服务器套接字和一个客户机套接字。服务器将不断发送十六进制的数据,连接的客户端将读取数据流并执行一些工作。大多数流量都是以这种方式发生的。在极少数情况下,客户端会向服务器发送一个字节串。在这一点上,我在这一行得到了Java.io.StreamCorruptedException:
ObjectInputStream in = new
ObjectInputStream(socketFromClient.getInputStream());例外:
java.io.StreamCorruptedException: invalid stream header: 020001B5
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:857)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:349)
at ReadInput.run(ReadInput.java:21)
at java.lang.Thread.run(Thread.java:745)"020001B5“正是客户端发送到服务器的字节串。
我不明白为什么我要买这个StreamCorruptedException。我的代码逻辑没有任何“流头部”。什么是流头部?我检查了javadoc,但我不明白为什么会发生这种情况。
任何提示都非常感谢。
谢谢
-v
发布于 2017-07-21 08:37:57
您的客户端没有使用ObjectOutputStream写入数据:这就是您看到此异常的原因。ObjectOutputStream和ObjectInputStream用于序列化和反序列化Java对象。
考虑使用BufferedReader或DataInputStream,而不是使用ObjectInputStream读取数据。
https://stackoverflow.com/questions/45227171
复制相似问题