修剪字节数组末尾的空元素 - Kotlin

Trimming empty elements off end of byte array - Kotlin

在Kotlin中,编写TCP服务器程序时,服务器不知道要接收的数据长度。 我初始化了大小为 1024 的字节数组。但我也可能收到 5 个字节。当我读到一些其他链接时,说我们需要维护单独的缓冲区并执行复制到新缓冲区并从新缓冲区写入数据。

这是在 Kotlin 中唯一的方法吗?还是我们有其他更好的选择?

val buffer = ByteArray(1024)
val count = mInStream?.read(buffer)

if (count > 0) {
    writeData(buffer)
}

fun writeData(buff:Bytearray){
//the data in buff will be written to the bluetooth socket
}

如果writeData 从缓冲区读取,则不必读取所有内容。 您可以只将 count 传递给它并将实现更改为最多只将 count 字节写入套接字。

如果你想从缓冲区中的任何地方开始,你也可以传递一个偏移量,但在这种情况下,我猜你只需要从头开始。

此外,我猜你并没有展示所有代码,但你应该从 mInStream 开始循环阅读(而不是一次)以确保阅读所有内容。