我需要通过TCPSocket将Uint8List
传递给Java中的byte[]
数组。两端尺寸不匹配。 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);
}
输出:发送数据大小: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);
}
}
输出:接收到的数据大小:1
我确定套接字连接已正确建立,因为我可以在它们上完美地发送Strings和Integers。
答案 0 :(得分:2)
发生这种情况是因为read()
(FilterInputStream
是他的儿子)的DataInput
方法读取了just the next avaliable byte。
如果您想获得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);
此代码段摘自here。