gpt4 book ai didi

java - StreamCorruptedException : invalid type code: AC

转载 作者:IT老高 更新时间:2023-10-28 21:02:26 25 4
gpt4 key购买 nike

我的问题是当它第二次尝试读取对象时,它会抛出异常:

java.io.StreamCorruptedException: invalid type code: AC
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1356)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
at Client.run(BaseStaInstance.java:313)

java.io.StreamCorruptedException: invalid type code: AC
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1356)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
at Client.run(BaseStaInstance.java:313)

我第一次发送完全相同的对象消息;但是,当我第二次尝试做同样的事情时,它会抛出上面的错误。我需要重新初始化 readObject() 方法吗?我什至打印出了下面一行接收到的消息对象,它与它工作正常的第一个实例完全相同。

Object buf = myInput.readObject();

我假设追加有一些问题,但我真的没有用追加。我只想每次都读一个新行。我真的很感激修复这个错误的一些帮助。谢谢。

===================================

在这一行之前,我只是在 run() 方法中为套接字创建输入和输出对象。对象声明在类中的run()方法之外:-

@Override
public void run() {
try {
sleep((int) 1 * 8000);
} catch (Exception e) {
e.printStackTrace();
}

try {
//Creating input and output streams to transfer messages to the server
myOutput = new ObjectOutputStream(skt.getOutputStream());
myInput = new ObjectInputStream(skt.getInputStream());
while (true) {
buf = myInput.readObject();
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
} catch (Exception e) {
e.printStackTrace();
}
}
}

你是对的;我不关闭对象。我不知道该怎么做。

最佳答案

根本问题是您正在使用新的 ObjectOutputStream 写入您已经使用之前的 ObjectOutputStream 写入的流。这些流具有由各自的构造函数写入和读取的 header ,因此如果您创建另一个 ObjectOutputStream 您将编写一个新的 header ,该 header 以 - 你猜怎么着? - 0xAC, 和现有的 ObjectInputStream 在这一点上并不期待另一个标题,所以它会出错。

在@trashgod 引用的Java 论坛线程中,我应该省略关于“在两端为每个对象重新创建”的部分:这只是浪费。在套接字的整个生命周期内使用单一的 OOS 和 OIS,并且不要在套接字上使用任何其他流。

如果你想忘记你写的内容,使用 ObjectOutputStream.reset()。

并且不要在同一个套接字上使用任何其他流或 ReadersWriters。对象流 API 可以处理所有 Java 原始数据类型和所有 Serializable 类。

关于java - StreamCorruptedException : invalid type code: AC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2393179/

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