`
Jony.Hwong
  • 浏览: 116741 次
  • 来自: ...
社区版块
存档分类
最新评论

Http连接超时处理

阅读更多
声明一个boolean公共变量,表明当前httpconnection是否得到服务器回应。

你的连接线程中在连接之前置这个变量为false;

另起一个监视线程,拿到那个HttpConnection的连接对象,并循环监视这个boolean公共变量。如果指定时间内(20秒后)你的boolean公共变量还是false,那么就主动置httpconnection=null。这样,那边连接线程就会抛出异常退出来。"  -----zhengyun

写了Timer类来实现.(学习国外一个网站上的写法)

class Timer extends Thread {
  /** 每个多少毫秒检测一次 */
  protected int m_rate = 100;

  /** 超时时间长度毫秒计算 */
  private int m_length;

  /** 已经运行的时间 */
  private int m_elapsed;

  /**
   * 构造函数
   * 
   * @param length
   *            Length of time before timeout occurs
   */
  public Timer(int length) {
   // Assign to member variable
   m_length = length;

   // Set time elapsed
   m_elapsed = 0;
  }
  /**
   * 重新计时
   *
   */

  public synchronized void reset() {
   m_elapsed = 0;
   System.out.println("reset timer");
  }
  /**
   * 故意设置为超时,可以在服务器有返回,但是错误返回的时候直接调用这个,当成超时处理
   *
   */
  public synchronized void setTimeOut()
  {
   m_elapsed = m_length+1;
  }

  /** 
    */
  public void run() {
   // 循环

   System.out.println("timer running");
   for (;;) {
    // Put the timer to sleep
    try {
     Thread.sleep(m_rate);
    } catch (InterruptedException ioe) {
     continue;
    }

    synchronized (this) {
     // Increment time remaining
     m_elapsed += m_rate;

     // Check to see if the time has been exceeded
     if (m_elapsed > m_length && !isConnActive) { //isConnActive 为全局变量
      // Trigger a timeout
      timeout();
      break;
     }
    }

   }
  }

  /**
   * 超时时候的处理
   *
   */
  public void timeout() {
      httpConnection = null;
      System.out.println("conn time > " + TIME_OUT + " ms");
    }
}


 

在http连接线程调用的同是调用 new Timer(20*1000).start();

需要重新计时时候调用timer.reset();
分享到:
评论

相关推荐

    java中处理http连接超时的方法.pdf

    java中处理http连接超时的方法.pdf

    Android超时处理

    对于超时的定义,通常包含连接超时(尝试建立连接的时间限制)和读取超时(等待服务器响应的时间限制)。在`HttpURLConnection`中,可以通过`setConnectTimeout()`和`setReadTimeout()`设置这两个超时值。对于OkHttp...

    java中处理http连接超时的方法借鉴.pdf

    java中处理http连接超时的方法借鉴.pdf

    PHP超时处理全面总结.docx

    1. **Web服务器超时处理** - **Apache**:在Apache服务器中,当使用FastCGI与PHP-FPM集成时,存在三个关键的超时设置。缺省情况下,FastCGI的连接超时通常设置为30秒。若需要调整,可以在`httpd.conf`中修改`...

    超时处理abc

    在Java中,超时处理通常涉及到网络I/O操作,如HTTP请求、数据库连接、Socket通信等。以下是一些核心知识点: 1. **Socket超时**:Java的`Socket`类提供了设置超时的方法,如`setSoTimeout(int timeout)`,这用于...

    java 访问网络 下载文件 爬虫 超时处理解决方案

    本文将深入探讨如何在Java中有效处理这些方面的问题,特别是超时处理解决方案,这对于构建高效、稳定的网络应用至关重要。 ### Java访问网络 在Java中,访问网络通常涉及到使用`java.net`包中的类,如`URL`和`...

    cpp-并行执行http请求支持超时设置

    本主题聚焦于"cpp-并行执行http请求支持超时设置",这涉及到并发处理、HTTP协议以及时间管理等核心概念。 首先,"并行执行http请求"指的是同时发起多个HTTP请求,以提高程序的执行效率。在多核处理器和现代操作系统...

    驾驭时间的缰绳:Nginx连接超时处理全解析

    Nginx(发音为 "engine-x")是一个高性能的HTTP和反向代理服务器,它以事件驱动和异步非阻塞的方式运行,能够处理数以万计的并发连接,同时保持低内存占用。Nginx最初由俄罗斯的程序员Igor Sysoev开发,并在2004年...

    PB6,PB7,PB8,PB9,PB10,PB11调用WEBSERVICE,并解决超时问题

    解决这个问题通常涉及调整超时设置、优化服务性能、检查网络连接或采用重试策略等。 描述中提到的“AXIS2”是Apache软件基金会的一个开源Web服务框架,它用于部署和实现Web服务。AXIS2提供了高效的执行模型,支持...

    使用QNetworkAssessManager下载文件,支持断点续传和超时处理

    1.下载进度条展示,支持暂停,停止功能 2.显示下载/剩余大小,剩余时间,下载速度 3.多线程下载,不阻塞界面线程 4.文件断点续传下载 5.下载请求超时的处理 环境VS2015 + win10 64位

    golang http 连接超时和传输超时的例子

    ### Golang HTTP 连接超时与传输超时详解 #### 一、引言 在进行网络编程时,经常会遇到连接超时或传输超时的问题。对于 Go 语言(Golang)开发者而言,掌握如何设置和处理这些超时尤为重要。本文将通过一个具体的...

    [线上问题] “服务端长连接与客户端短连接引起Nginx产生大量\"TIME_WAIT\"状态的线程”的问题分析解决

    与之相对的短连接,则是每次发送或接收数据后立即断开,每次通信都需要重新建立连接,适用于通信频率较低,或者对资源消耗有限制的情况,如Web网站的HTTP服务。短连接的频繁建立与断开会带来较大的开销,尤其是当...

    java超时控制

    当使用`HttpURLConnection`或者第三方库如Apache HttpClient进行HTTP请求时,可以通过设置连接超时和读取超时来控制请求的超时。例如,`setConnectTimeout()`和`setReadTimeout()`方法可以分别用于设置连接和读取的...

    Nginx超时设置.docx

    # keep-alive 连接超时时间 lingering_timeout 5; # lingering_close 生效后的超时时间 # 设置后端服务器超时 proxy_connect_timeout 60; # 上游服务器连接超时时间 proxy_read_timeout 150; # 等待后端...

    Go-httpcontrol允许HTTP传输层控制超时和重试

    例如,我们可以设置连接超时、读取超时、写入超时等,确保每个阶段都有明确的时间限制。此外,`httpcontrol`还支持根据HTTP响应状态码或错误类型来决定是否重试请求,这样我们就可以针对不同的错误场景制定不同的...

Global site tag (gtag.js) - Google Analytics