Android bufferedReader.readLine用于持续监听

时间:2012-07-06 09:37:00

标签: android sockets buffer

我正在尝试编写一个连接到服务器的演示应用程序,然后只是继续侦听来自服务器的随机定时输入。发现和连接到服务器工作正常,现在我开始一个新的线程,所以我不阻止ui。现在,在我的帖子中,如果有传入的数据,我需要不断收听并做出反应。根据我到目前为止所读到的内容,应该这样做:

  while (connected) {
      while ((line = bufferedReader.readLine()) != null) {
          // do something with line and contact the ui
      }
  }

我不明白:readLine()显然只能从服务器传入数据时读取一行。那么,一旦服务器停止发送,循环是否应该中断,这意味着什么时候没有发送?

Thanx任何想法, 马库斯

1 个答案:

答案 0 :(得分:1)

readLine是一种阻塞方法,因此如果没有收到任何内容,它将等待阻塞执行。循环仅在收到空值时停止(当读取文本文件时,这意味着已经到达文件末尾)。

尝试以不同的方式检测已关闭的连接,或者如果您还对服务器进行编码,请尝试发送类似“END”的内容,这可以在客户端读取。