1

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

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

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

谢谢你的任何想法,马库斯

4

1 回答 1

1

readLine 是一个阻塞方法,所以如果没有收到任何内容,它将在那里等待阻塞执行。循环只会在接收到空值时停止(读取文本文件时,这通常意味着已到达文件末尾)。

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

于 2012-07-06T09:44:00.317 回答