1. 程式人生 > >Http連線超時處理

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();

相關推薦

Http連線超時處理

宣告一個boolean公共變數,表明當前httpconnection是否得到伺服器迴應。 你的連線執行緒中在連線之前置這個變數為false; 另起一個監視執行緒,拿到那個HttpConnection的連線物件,並迴圈監視這個boolean公共變數。如果指定時間內(20秒後)你

go 短連線和長連線 超時處理 go 短連線和長連線 超時處理

go 短連線和長連線 超時處理 作為一個可能會和很多Client進行通訊互動的Server,首先要保證的就是整個Server執行狀態的穩定性,因此在和Client建立連線通訊的時候,確保連線的及時斷開非常重要,否則一旦和多個客戶端建立不關

解決登入提示http連線超時問題

系統一直登入不上,首先檢視關聯的登入系統,首先,因為這個系統是呼叫別的系統的登入介面來實現登入的那麼,關聯的系統如果出問題了,那麼這個肯定出問題。 首先看看關聯絡統是否能登入,在網頁輸入url,結果登入成功。 然後,再在url輸入提供的介面和引數,返回的json串如下

"SQL Server 不存在或訪問被拒絕","無法連線到伺服器,使用者xxx登陸失敗","連線超時"處理方法

一."SQL Server 不存在或訪問被拒絕" 這個是最複雜的,錯誤發生的原因比較多,需要檢查的方面也比較多. 一般說來,有以下幾種可能性: 1,SQL Server名稱或IP地址拼寫有誤 2,伺服器端網路配置有誤 3,客戶端網路配置有誤 要解決這個問題,我們一般要遵循以

tcp連線超時處理

設定connect超時很簡單,CSDN上也有人提到過使用select,但卻沒有一個令人滿意與完整的答案。偶所講的也正是select函式,此函式整合在winsock1.1中,簡單點講,"作用使那些想避免在套接字呼叫過程中被鎖定的應用程式,採取一種有序的方式,同時對多個套接字

MySql資料庫連線超時處理

博主在做web開發時遇到MySql資料庫連線超時的問題。 控制檯報錯如下: Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransact

golang http 連線超時和傳輸超時

golang 測試程式碼 package main import ( "net/http" "net/url" "fmt" "io/ioutil" "time

jedis連線超時問題處理

public class TestPing { public static void main(String[] args) { Jedis jedis = new Jedis("192.168.201.128", 6379); System.out.println(jedis.ping()); }

Tomcat+MySQL應用中連線超時造成各種異常情況的處理

     用Tomcat+Mysql+Spring+Hibernate作了一個小應用,結果投入使用的時候,發現每過一天,就必須重啟動Tomcat,我跟蹤Tomcat日誌,發現是Mysql連線被拒絕     嘗試了N種方法,換為Tomcat的連線池連線,調整Jdbc連線串的引數

Qt之處理QNetworkAccessManager網路連線超時

簡述 在網路操作中,經常會由於各種原因引起網路連線超時,究竟何為網路連線超時? 網路連線超時:在程式預設的等待時間內沒有得到伺服器的響應 超時原因 引起網路連線超時的原因很多,下面,列舉一些常見的原因: 網路斷開,不過經常顯示無法連線網路阻塞,導致你不能

VC連線HTTP伺服器 & MFC 處理 HTTP 請求的基本方法

用 MFC 發起 HTTP Post 請求,主要流程和 MFC HTTP Get 程式碼一樣,以下是示例程式碼: //通過 http POST 協議來發送命令給伺服器 CInternetSession session; session.SetOption(INTERNET_OPTION_CONNECT_TI

http協議Connection:Keep-alive 是怎麼用,一次連線可以處理多個請求?

1. 在HTTP1.0中,沒有正式規定 Connection:Keep-alive 操作;在HTTP1.1中所有連線都是Keep-alive的,也就是預設都是持續連線的(Persistent Connection)。 2. 兩種的連線方式的區別如下圖所示 3.

Nodejs HTTP請求的超時處理 Nodejs HTTP Client Request Timeout Handle

問題 Nodejs原生的http.request 方法是不支援設定超時引數的, 而網路請求經常會遇到超時的情況,特別是對於外部網路,如果不處理超時,發起的請求將會一直卡主,消耗的系統資源也不能及時被釋放。 解決方案(新, 有問題,socket會重用,設定超時會有問題):擴充

HttpURLConnection超時處理

for back aik aqi neo can pac yun jcp Python%E5%85%A8%E6%A0%88%E5%BC%80%E5%8F%91%E4%B9%8B9%E3%80%81%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E3

IIS 配置PHP環境HTTP 500錯誤處理方法

iis在搭建php程序的時候遇到了500錯誤,訪phpinfo測試也是500,重新安裝了php,重新搭建網站,網站管理員賬戶,給上everyone權限測試都是500錯誤,糾結了較長一段時間,後來想到了程序池方面的影響,以下步驟是我解決我的問題的處理方法:打開IIS管理器,選擇應用程序池——你的網站應用程序池(

nginx丟棄http包體處理

length 如果 等於 sina 函數 文件 清0 能夠 request http框架丟棄http請求包體和上一篇文章http框架接收包體, 都是由http框架提供的兩個方法,供http各個模塊調用,從而決定對包體做什麽處理。是選擇丟棄還是接收,都是由模塊決定的。例如靜

C#中的多線程超時處理實踐

出現問題 可能性 readline col 似的 rms 應用 true 有一個 最近我正在處理C#中關於timeout行為的一些bug。解決方案非常有意思,所以我在這裏分享給廣大博友們。 我要處理的是下面這些情況: 我們做了一個應用程序,程序中有這麽一個模塊,它的功能向

新功能:阿裏雲負載均衡SLB支持HTTP/HTTPS超時時間自定義功能

算法 雲計算 摘要: 大家好,很高興的告訴大家,阿裏雲負載均衡SLB已經在新加坡、澳大利亞(悉尼)、馬來西亞(吉隆坡)、日本(東京)、美國(矽谷)、美國(弗吉尼亞)、德國(法蘭克福)、阿聯酋(迪拜)、印度(孟買)上述地域支持HTTP/HTTPS超時時間自定義功能(增加黑名單),國內地域也即將上線。1.

Web服務器超時處理

number pen ceil headers poll() 總結 selector 工作 雪崩 來源 https://segmentfault.com/a/1190000000313184 Apache 一般在性能很高的情況下,缺省所有超時配置都是30秒,但是在上傳文件,

設置java函數的響應時間以及超時處理

seconds read rtt .com 釋放 debug ado err 圖片 一些事情的阻隔,然後把好不容易形成的習慣改變。想著嘗試改變,卻處處觸及底線,斂起觸角,繼續向前。不知不覺,距上次已有2個禮拜了。爾後,卿域非我,子視無卿。一、應用場景在有些時候,我們利用de