android - 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 秒前有效的过时数据
我想找到一种仅读取最新数据并忽略阅读器缓冲的数据的方法。
我应该怎么办?
谢谢你
解决方案
推荐阅读
- entity-framework - ASP.NET Core - 如何处理范围服务内的异常
- python - 对于 Codeforces,输出返回 2 而不是 1
- python - 使用 Python 注入器模块复制指南 @Named
- android - 是否可以使用 Java 实现与 Coroutines 相同的效率?
- javascript - Chart.JS 获取图表的 Json 数据并返回类型等于特定类型的数据集
- r - 使用 R 中的频率表确定收入等级的中位数
- python - python类之间的意外继承
- python - 在其他库下设置 scipy
- javascript - Discord.js:你能过滤在线和离线用户,然后将它们添加到数组中吗?
- flutter - InAppWebView - 在 html 中注入文本