Мне нужно передать байт [] через TCP Socket в сторону android-client.
я пытался использовать следующий код:Передача байта [] через TCP Socket in android
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: array size too large(Heap Size=5699KB, Allocated=3403KB, Bitmap Size=78KB)
вы правы, я не отправлять на стороне сервера размер массива байтов, но весь массив байтов я отправляю данные с помощью Socket.Send (byte []) - сторона сервера написана в C# (это настольное приложение). Как я могу изменить свою функцию для чтения весь байт []? – user1127431
Вы не можете. Вам нужно начать с отправки длины массива. – aioobe
Я видел, что в C# существует метод Socket.Receive (byte []), аналогичного метода в java нет? – user1127431