在android中通过TCP Socket传输一个byte []

时间:2012-01-03 08:29:00

标签: java android

我需要在android -client端通过TCP Socket传输一个byte [] 我试着使用以下代码:

public static int readBytes(byte[] myByteArray) throws IOException {
    InputStream in = socket.getInputStream();
    DataInputStream dis = new DataInputStream(in);

    int len = dis.readInt(); //<-here i get the error

    byte[] data = new byte[len];
    if (len > 0) {
        dis.readFully(data,0,len);
    }
    myByteArray=data;
    return data.length;
}

但是我收到以下错误:

  

12-23 17:30:49.814:E / AndroidRuntime(11717):   java.lang.OutOfMemoryError:数组大小太大(堆大小= 5699KB,   分配= 3403KB,位图大小= 78KB)

3 个答案:

答案 0 :(得分:0)

看到这个答案。 Java Heap Memory error from socket我想知道,Android上是否有一些代码示例引导人们参与其中?

答案 1 :(得分:0)

您可能会在下面的行中找到OutOfMemoryError。 (使用new分配新内存的行。)

在进行分配之前打印len,您可能会发现它是数字(比您预期的要大很多)。

Log.d("YOU_TAG", "len = " + len);

大概你没有发送发送端字节数组的大小。 (或者如果你这样做,你的阅读/写作已经不同步了。)

答案 2 :(得分:0)

你必须在这样的闭环中阅读:

while(true){
int len = dis.readInt();
}