簡體   English   中英

通過Android中的TCP套接字傳輸byte []

[英]Transfer a byte[] via TCP Socket in android

我需要通過android -client端中的TCP套接字傳輸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)

看到這個答案。 我想知道套接字上的Java堆內存錯誤, Android上是否有一些代碼示例導致人們這樣做?

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

在進行分配之前先打印len ,您可能會發現這是一個很大的數字 (比您的預期要大得多)。

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

大概您不在發送方發送字節數組的大小。 (或者,如果這樣做,則您的閱讀/寫作不同步。)

您必須像這樣在閉環中閱讀:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM