如何在 Android 中的一定时间后停止 BufferedReader
How to stop a BufferedReader after a certain amount of time in Android
我有一个线程可以打开一个将数据发送到服务器的套接字。服务器可能会根据是否有人在工作站发回数据。但是我试图在 BufferedReader
上设置超时,以便在 30 秒后它继续说响应为空。
//Receive Response
bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
response = new StringBuilder();
while ((line = bufferedReader.readLine()) != null ) {
response.append(line);
}
这是我的 BufferedReader
,非常标准,我查看了很多计时器和其他帖子,但没有找到可行的解决方案。
您可以在您的套接字实例上调用 setSoTimeout()
。
Itt 将在达到超时时引发 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
}
我有一个线程可以打开一个将数据发送到服务器的套接字。服务器可能会根据是否有人在工作站发回数据。但是我试图在 BufferedReader
上设置超时,以便在 30 秒后它继续说响应为空。
//Receive Response
bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
response = new StringBuilder();
while ((line = bufferedReader.readLine()) != null ) {
response.append(line);
}
这是我的 BufferedReader
,非常标准,我查看了很多计时器和其他帖子,但没有找到可行的解决方案。
您可以在您的套接字实例上调用 setSoTimeout()
。
Itt 将在达到超时时引发 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
}