我有一个我不太明白的问题。我在两台独立的机器上有一个服务器套接字和一个客户端套接字服务器将不断发送十六进制数据,连接的客户端将读取数据流并做一些工作。 大部分流量都是以这种方式发生的。在少数情况下,客户端将向服务器发送字节字符串。在这一点上,我得到了 此行的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)
&#34; 020001B5&#34;正是客户端发送到服务器的字节串。
我不明白为什么我得到这个StreamCorruptedException。我的 代码逻辑没有任何&#34;流标题&#34;。什么是流标题? 我检查了javadoc,我无法弄清楚为什么会发生这种情况。
任何提示都非常赞赏。
感谢
-v
答案 0 :(得分:1)
您的客户未使用ObjectOutputStream
撰写数据:这就是您查看此异常的原因。 ObjectOutputStream
和ObjectInputStream
用于序列化和反序列化Java对象。
不要使用ObjectInputStream
来读取数据,而应考虑使用BufferedReader
或DataInputStream
。