StreamCorruptedException

StreamCorruptedException

我有一个我不太了解的问题。我在两台单独的计算机上有一个服务器套接字和一个客户端套接字。服务器将不断以十六进制发送数据,而连接的客户端将读取数据流并进行一些工作。
大多数流量都以这种方式发生。在极少数情况下,客户端会将字节字符串发送到服务器。在这一点上,我正在
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

最佳答案

您的客户端未使用ObjectOutputStream写入数据:这就是为什么您看到此异常的原因。 ObjectOutputStreamObjectInputStream用于序列化和反序列化Java对象。

代替使用ObjectInputStream读取数据,可以考虑使用BufferedReaderDataInputStream

请参见this example for more details

07-24 09:26