如何在Android中经过一段时间后停止BufferedReader

时间:2018-03-20 08:07:11

标签: java android bufferedreader

我有一个线程可以打开一个将数据发送到服务器的套接字。服务器可以根据某人是否在工作站发回数据。但是,我试图在BufferedReader上设置超时,以便在30秒后继续说响应为空。

//Receive Response
bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
response = new StringBuilder();
while ((line = bufferedReader.readLine()) != null ) {
    response.append(line);
}

这是我的BufferedReader,非常标准,我查看过一堆定时器和其他帖子,但还没有找到合适的解决方案。

1 个答案:

答案 0 :(得分:2)

您可以在套接字实例上调用setSoTimeout()

当达到超时时,它会引发SocketTimeoutException。将您的读取逻辑包装在try-catch块中,捕获该异常并按照您的意愿处理它。

这样的事情:

try {
    socket.setSoTimeout(30000);

    bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    while ((line = bufferedReader.readLine()) != null ) {
        response.append(line);
    }
} catch (SocketTimeoutException ste) {
    // timeout reached
} catch (Exception e) {
    // something else happened
} finally {
    // some general processing
}