StreamCorruptedException:无效类型代码:ac

StreamCorruptedException:无效类型代码:ac

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

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()方法之外:-

@Overridepublic 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();
        }
    }}

你说得对,我没有关闭物体。我不知道该怎么做。


繁星点点滴滴
浏览 737回答 1
1回答

MMMHUHU

潜在的问题是,您正在使用一个新的ObjectOutputStream写入现有的ObjectInputStream你已经用了ObjectOutputStream写信给。这些流具有由相应构造函数编写和读取的标头,因此如果您创建另一个ObjectOutputStream你要写一个新的标题,开头是-你猜怎么着?-0xAC,和现存的ObjectInputStream在这一点上不期待另一个标题,所以它会变胖。在@trashhead引用的Java论坛线程中,我应该省略关于“两端都有新对象”的部分:这太浪费了。在套接字的生命周期中使用单个OOS和OIS,并且不要使用套接字上的任何其他流。如果你想忘记你写的东西,请使用ObjectOutputStream.reset().也不要使用任何其他的流或者Readers或Writers在同一个插座上。对象流API可以处理所有Java基本数据类型和所有Serializable上课。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java