Мне нужно передать Uint8List в массив byte[] в java через TCPSocket. Несоответствие размеров на обоих концах. PS: Я новичок в дартсе.
Я пробовал socket.add(buf), socket.write(buf), socket.writeAll(buf), но ни один из них не работал
Код на стороне Flutter (TCP-клиент)
void readVoiceData(Uint8List buf) {
print("Send data size:"+buf.lengthInBytes.toString());
socket.add(buf);
}
OUTPUT: Send data size: 1280
Фрагмент кода на стороне Java (TCP-сервер)
in = new DataInputStream(clientSocket.getInputStream());
Log.d(TAG, "****Opened InputStream*******");
while (!isInterrupted()) {
if (mTrack != null) {
try {
in.read(bytes);
Log.d(TAG, "Received data size"+bytes.length);
}
}
OUTPUT: Received data size: 1
Я уверен, что соединение с сокетом установлено правильно, так как я могу безупречно отправлять по ним строки и целые числа.




Это происходит потому, что метод read() в FilterInputStream (DataInput - его сын) читает просто следующий доступный байт.
Если вы хотите получить общий размер InputStream, сделайте что-нибудь вроде:
size = in.available(); //returns an estimate of number of bytes avaliable on the stream
buf = new byte[size];
realLength= in.read(buf, 0, size);
Этот фрагмент кода взят из здесь.