当从输入流Java中读取时,有没有一种方法可以让时间暂停



可能重复:
是否可以在超时的情况下读取Java InputStream?

我注意到,当我试图读取更多信息,然后发送到我的服务器时,网络浏览器会冻结。我看到我的套接字冻结了,因为网络浏览器返回的信息比它试图读取的信息少。有没有一种方法可以在Curry上设置超时时间?我正在使用输入流

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; 
 } 

Socket.setSoTimeout()HttpURLConnection.setReadTimeout()

这里讨论过:是否可以在超时的情况下从InputStream中读取?

据我所见,解决方案已经提供。

您有几个选择,但并不美观。"正常"的java套接字io没有超时,流也没有

  1. 在一个单独的线程中进行读取,并将输入数据排队使用您自己的的超时机制

  2. 使用java非阻塞IO api

    http://download.oracle.com/javase/1.4.2/docs/guide/nio/

相关内容

  • 没有找到相关文章

最新更新