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

时间:2014-09-09 07:56:14

标签: java android tcp inputstream bufferedreader

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

我希望每次Android收到200-300字节数组(每个完整的TCP数据包)都有一种方法可以改变BufferedReader的最大字节大小,或者是否有替代方法这样做?

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();
    }

1 个答案:

答案 0 :(得分:1)

  

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

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

您当前正在尝试读取字符流。在收到readLine()\r\n之前,您的\r\n方法将会屏蔽。我猜这会导致您的延迟,因为您正在等待0x0A0x0D字节方便地到达。