【问题标题】:getting StreamCorruptedException获取 StreamCorruptedException
【发布时间】:2013-02-01 07:53:02
【问题描述】:

我正在尝试流式传输ObjectOutput,但出现上述错误。

代码:

private void writelogin(int i, int j, int k, int c4, int l, int m, Socket sock) throws IOException, InterruptedException {
    ObjectOutputStream dos = new ObjectOutputStream((OutputStream)sock.getOutputStream());
    boolean data = true;
    int[] btw = new int[]{i,j, k, c4, l, m};

    do {
        ((ObjectOutput) dos).writeObject(btw);
            data=false;
        } while (data);
            dos.flush();
            dos.close();}}

我不知道为什么。

例外是通过System.out 而不是通过Errorlog

我的服务器收到的内容: AC ED(有时很多 00 和其他六角“看似随机”的数字)

我的信息流必须发送的内容: 03 96 144 54 79 05

我的服务器必须接收的内容: 03 60 90 36 4F 05

允许使用十六进制数字是正确的,所以不是问题。

问题存在,因为我使用ObjectOutputStreamArray,因为我使用DataOutputStream 并通过dos.writeByte(i);dos.writeByte(j); 放置每个块本身,它工作正常。

想出了一些新的东西:我的ObjectOutputStream 自己发送了一个AC ED 00 05...有人知道如何避免这种情况吗?我什么都不送,但他送。

没关系,找到解决方法。发现甚至可以通过DataOutputStream 发送数组,因此避免了这种情况。

【问题讨论】:

    标签: android sockets object client outputstream


    【解决方案1】:

    在套接字的整个生命周期中,您必须在两端使用相同的 ObjectInputStream 和 ObjectOutputStream,而不是每次需要其中一个时都创建一个。

    【讨论】:

    • 我这样做了,但是输出和输入的方法不同,会不会是这个问题?
    • @Ekonion 不,你不要这样做。看看你的代码。每次调用该方法时都会创建一个新的。我不知道你的问题是什么意思。
    • 现在我明白了... 非常感谢,我认为现在会很容易进行 ^^ 抱歉,请您花些时间...。但是还有一个问题:如果我只创建一个每个(输入和输出)我如何从另一个活动访问它们?还是我必须在每次发送和接收时关闭套接字?
    • @Ekonion 将它们保存为您保存套接字的任何类的成员。
    • 因为是 java 和 android 的新手,我不确定成员是什么。它是扩展主类的子类吗? private class DOS extends SockClass{ ?
    【解决方案2】:

    以下代码看起来很可疑:

    ((ObjectOutput) dos).writeObject(btw);
    

    试试吧,

    dos.writeObject(btw);
    

    你为什么要对 ObjectOutput 进行类型转换?

    编辑:我认为您在数组初始化中忘记了new

    int[] btw = new int[]{i,j, k, c4, l, m};
    

    【讨论】:

    • 删除你提到的内容,但还是一样...我也有一个演员,因为 eclipse 说我以前需要一个。现在它消失了,eclipse 似乎还可以,但我的问题仍然存在。
    • 好的。另外,我认为您在数组初始化中忘记了“新”。查看我的编辑。
    • 补充说 ^^ 现在看起来更合乎逻辑了,但还是一样...将在我的 Q 中添加一个小解释
    • 你是正确的,演员是多余的,但删除它实际上并没有改变任何东西,因此不能解决这个问题或回答这个问题。
    猜你喜欢
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 2014-05-11
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多