首页 > 解决方案 > Android Socket 实时读取

问题描述

我处于快速服务器慢客户端的情况。我的服务器以每秒 38200 字节的速率发送数据这是客户端代码:

插座

socket = Socket(connectionId.getAddress(), 2500)
    socket?.soTimeout = 5000
    val receiveBufferSize = socket?.receiveBufferSize
    Log.d(TAG, "Buffer size $receiveBufferSize")
    socket?.receiveBufferSize = 382

    bufferedReader = BufferedReader(InputStreamReader(inputStream), 382)

注意:如您所见,我试图限制套接字和阅读器的缓冲区大小。

阅读:

try {
            do {
                val line = bufferedReader?.readLine()
                line?.let {
                    listener?.serialDataReceived(it + "\r\n")
                }
            } while (line != null)
        } catch (e: Exception) {
            Log.e(TAG, "Failed to read from $TAG", e)
        }

问题是我的客户读取了 10 秒前有效的过时数据

我想找到一种仅读取最新数据并忽略阅读器缓冲的数据的方法。

我应该怎么办?

谢谢你

标签: androidsocketskotlinclient-serverreal-time

解决方案


推荐阅读