首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在缓冲数据到达时而不是在缓冲区已满时读取缓冲数据?

如何在缓冲数据到达时而不是在缓冲区已满时读取缓冲数据?
EN

Stack Overflow用户
提问于 2014-09-09 07:56:13
回答 1查看 515关注 0票数 0

使用Android,我从微控制器读取数据(一个有符号的字节数组)。据我所知,BufferedReader的缓冲区大小为8192字节。我每秒钟发送大约200-300个字节,这意味着在调试器读取字节数组之前,我必须等待大约25-30秒(8192/300)。

每当Android接收到200-300字节数组(每个完整的TCP数据包)时,我都想读这个,有没有办法改变BufferedReader的最大字节大小,或者有其他方法来做到这一点?

代码语言:javascript
复制
private BufferedReader input;
  input = new BufferedReader(new InputStreamReader(
      this.clientSocket.getInputStream()));
  ...
  ...
  while(true)
  {
    try
    {
      Log.i("WaitingForSomeData","");
      String read = input.readLine();
      byte[] bytes = read.getBytes();
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-09 08:07:35

我正在从微控制器读取数据(一个有符号的字节数组)。

如果要缓冲二进制数据,则应该使用BufferedInputStream

您目前正在尝试读取字符流。readLine()方法将被阻塞,直到接收到\r\n\r\n为止。我猜这会导致您的延迟,因为您正在等待一个0x0A0x0D字节方便地到达。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25739372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档