我需要通过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);
}
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
我确信套接字连接已经正确建立,因为我能够完美地发送字符串和整数.
解决方法:
发生这种情况是因为FilterInputStream(DataInput是他的儿子)的read()方法读取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.
标签:java,sockets,dart
来源: https://codeday.me/bug/20190701/1345764.html