可能重复:
Is it possible to read from a Java InputStream with a timeout?
我注意到当我尝试阅读更多信息然后被发送到我的服务器时,网络浏览器会冻结。我看到我的套接字冻结,因为网络浏览器返回的信息较少,然后它正在尝试阅读。有没有办法在Currtly上设定时间我正在使用输入流
public String ReadLine()
{
String out;
out="";
// read in one line
try{
request = new StringBuffer(1000);
boolean f=true;
while(true)
{
int c=in.read();
if (c=='\r')
{
// next should be a \n
// Program freezed hear
c=in.read();
if (f==true)
return "";
break;
}
f=false;
out=out+(char)c;
request.append((char)c);
} // end while
} catch(IOException ec)
{
System.out.println(ec.getMessage());
}
System.out.println(request);
return out;
}
答案 0 :(得分:5)
Socket.setSoTimeout()
或HttpURLConnection.setReadTimeout()
。
答案 1 :(得分:1)
这里讨论过:Is it possible to read from a InputStream with a timeout?
据我所知,提供了解决方案。
答案 2 :(得分:-1)
你有几个选择,但它并不漂亮。 '普通'java套接字io没有超时也没有流
在单独的线程中进行读取并排队输入数据 使用您自己的超时机制
使用java非阻塞IO api