[英]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.