gpt4 book ai didi

Java 无效的流 header : 7371007E

转载 作者:行者123 更新时间:2023-12-03 18:39:09 25 4
gpt4 key购买 nike

我正在构建一个客户端-服务器应用程序。现在我想使用此代码将消息从客户端转发到所有其他客户端:

ArrayList<User> usrs = _usrHandler.getUsers();
for(User usr : usrs) {
if(!usr.getSocket().equals(_connection)) {
usr._oOut.writeObject(new CommunicationMessage(this._comMsg.getMessage(), CommunicationMessage.MSG,
this._comMsg.getUser()));
}
}

在客户端,程序正在监听消息。它抛出这个异常:

java.io.StreamCorruptedException: invalid stream header: 7371007E
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:783)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
at Connection$MessageListener.run(Connection.java:126)
at java.lang.Thread.run(Thread.java:637)

消息监听器:

             while(this._loop) {
this._comMsg = (CommunicationMessage) this._dataInput.readObject();

SimpleAttributeSet attr = new SimpleAttributeSet();
attr.addAttribute(StyleConstants.CharacterConstants.Bold, Boolean.TRUE);
attr.addAttribute(StyleConstants.CharacterConstants.Foreground, _comMsg.getUser().getColor());

messageClient.addMessage(_comMsg.getUser().getNickName() + ": ", attr);
messageClient.addMessage(_comMsg.getMessage(), _comMsg.getUser().getColor());

_comMsg = null;
}

有人看到错误了吗?

最佳答案

您的信息流可能会有所不同。

当您构造 ObjectInputStream 时,构造函数会从流中读取前两个字节,期望它们是对象流中应该存在的“神奇值”。如果它们不存在,它会抛出 StreamCorruptedException(这都在 ObjectInputStream 源代码中)。

所以看起来你在 ObjectInputStream 中包装了一个 InputStream 而实际上从连接的另一端下来的数据实际上并不是一个对象溪流。也许它仍在发送先前通信的数据。

关于Java 无效的流 header : 7371007E,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2171635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com