首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java InputStream抛出java.io.StreamCorruptedException

Java InputStream抛出java.io.StreamCorruptedException
EN

Stack Overflow用户
提问于 2017-07-21 08:32:44
回答 1查看 77关注 0票数 0

我有一个我不太明白的问题。我在两台不同的机器上有一个服务器套接字和一个客户机套接字。服务器将不断发送十六进制的数据,连接的客户端将读取数据流并执行一些工作。大多数流量都是以这种方式发生的。在极少数情况下,客户端会向服务器发送一个字节串。在这一点上,我在这一行得到了Java.io.StreamCorruptedException:

代码语言:javascript
复制
 ObjectInputStream in = new 
    ObjectInputStream(socketFromClient.getInputStream());

例外:

代码语言:javascript
复制
   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

EN

回答 1

Stack Overflow用户

发布于 2017-07-21 08:37:57

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

考虑使用BufferedReaderDataInputStream,而不是使用ObjectInputStream读取数据。

参见this example for more details

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45227171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档