gpt4 book ai didi

Java ObjectOutputStream 重置错误

转载 作者:行者123 更新时间:2023-12-01 12:14:38 26 4
gpt4 key购买 nike

我的项目由两部分组成:服务器端和客户端。当我启动服务器端时,一切正常,但是当我启动客户端时,我会收到此错误:

java.io.IOException: stream active
at java.io.ObjectOutputStream.reset(Unknown Source)
at client.side.TcpConnection.sendUpdatedVersion(TcpConnection.java:77)
at client.side.Main.sendCharacter(Main.java:167)
at client.side.Main.start(Main.java:121)
at client.side.Main.main(Main.java:60)

当我尝试在另一台电脑上运行此项目时,此错误发生得更频繁。在 Java 文档中我发现了这一点。

Reset may not be called while objects are being serialized. If called inappropriately, an IOException is thrown.

这是抛出错误的函数

void sendUpdatedVersion(CharacterControlData data) {
try {
ServerMessage msg = new ServerMessage(SEND_MAIN_CHARACTER);
msg.setCharacterData(data);
oos.writeObject(msg);
oos.reset();

} catch (IOException e) {
e.printStackTrace();
}
}

我尝试使用flush(),但这没有帮助。有任何想法吗?此外,服务器端没有错误。

最佳答案

我认为您误解了 reset() 的作用。它重置流以忽略先前写入其中的任何对象实例。在您的情况下,这显然不是您想要的,因为您将一个对象发送到流,然后立即重置,这是毫无意义的。

看起来你所需要的只是一个flush();如果这还不够,那么问题就出在接收方。

关于Java ObjectOutputStream 重置错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27089419/

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