如何检测(readinput in read)

时间:2014-04-02 13:03:08

标签: java android socket.io inputstream bufferedreader

在我的Android应用程序关闭连接时(比如关闭WiFi)我收到了无数的这条日志消息[cds] shutdowninput in read,这会中断我的应用程序并使其进行大量不必要的输入检查,I& #39; m使用java套接字编程我尝试通过调用isInputShutdown()来检查该问题,但没有得到任何结果,我正在尝试:

public String getServerResponse() throws Exception{

      while(true){
                  BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(), Charset.forName("UTF-8")));
                  if(xbmc_socket.isInputShutdown()){
                     return "stopped";
                  }else{
                     //continue(and that's what it always doing)
                  }
       }
}

1 个答案:

答案 0 :(得分:1)

我的问题是因为我将BufferedReader声明为本地变量(如我在问题中的代码中所示),并导致在结尾处打开套接字连接这个连接从我这边或从另一边结束。

因此,为了克服这个问题,我将BufferedReader声明为全局变量,这使我能够在连接关闭时处理它,比如手动关闭套接字或做任何适合我的应用最好:

public BufferedReader in;
public String getServerResponse() throws Exception{
  while(true){
      in = new BufferedReader(new InputStreamReader(socket.getInputStream(), Charset.forName("UTF-8")));
      // the rest of the code
   }
}