JAVA實現長連線 含心跳檢測 Demo

2021-09-07 20:21:48 字數 2579 閱讀 3272

實現原理:

通過新增相應的objectaction實現類,可以實現不同物件的響應、應答過程。

心跳反映的**:

**

* *維持連線的訊息物件(心跳物件)

*/public

class keepalive implements

serializable

}

客戶端的**:

public

class

client

public

static

final

class defaultobjectaction implements

objectaction

}public

static

void main(string args) throws

unknownhostexception, ioexception

private

string serverip;

private

intport;

private

socket socket;

private

boolean running=false; //

連線狀態

private

long lastsendtime; //

最後一次傳送資料的時間

//用於儲存接收訊息物件型別及該型別訊息處理的物件

public client(string serverip, int

port)

public

void start() throws

unknownhostexception, ioexception

public

void

stop()

/*** 新增接收物件的處理物件。

* @param

cls 待處理的物件,其所屬的類。

* @param

action 處理過程物件。

*/public

void addactionmap(classcls,objectaction action)

public

void sendobject(object obj) throws

ioexception

class keepalivewatchdog implements

runnable

catch

(ioexception e)

lastsendtime =system.currenttimemillis();

}else

catch

(interruptedexception e) }}

}}

class receivewatchdog implements

runnable

else

} catch

(exception e) }}

}}

服務短的**:

public

class

server

public

static

final

class defaultobjectaction implements

objectaction

}public

static

void

main(string args)

private

intport;

private

volatile

boolean running=false

;

private

long receivetimedelay=3000;

private

thread connwatchdog;

public server(int

port)

public

void

start()

@suppresswarnings("deprecation")

public

void

stop()

public

void addactionmap(classcls,objectaction action)

class connwatchdog implements

runnable

} catch

(ioexception e) }}

class socketaction implements

runnable

public

void

run()

else

}else

} catch

(exception e) }}

}private

void

overthis()

catch

(ioexception e)

}system.out.println("關閉:"+s.getremotesocketaddress());}}

}

長連線(輪詢,心跳,socket)

概念 表示客戶端和伺服器端保持聯絡,客戶端向伺服器端一直獲取資料,或者是伺服器端一直向客戶端推送資料。基本的長連線方式 輪詢表示客服端利用定時器原理 setinterval 間隔時間內向伺服器請求最新資料。心跳原理跟輪詢類似,但是心跳在一段時間內沒有向到伺服器請求,就會認為客戶端狀態異常。socke...

長連線 心跳保活機制

而在實現長連線方式時,存在很多效能問題,如 長連線保活 今天,我將 手把手教大家實現自適應的心跳保活機制,從而能高效維持長連線 確保實時性 避免短時間內重複連線所造成的通道資源 網路資源的浪費 可是,長連線會存在斷開的情況,而 斷開原因 主要是 長連線所在程序被殺死 nat超時 網路狀態發生變化 其...

長連線 短連線 心跳的簡單總結

通常瀏覽器訪問伺服器的時候就是短鏈結 連線 資料傳輸 關閉連線 1.client與server通過三次握手建立連線,client傳送請求訊息,server返回響應 2.雙方都可以發起close操作,不過一般都是client先發起close操作 3.短鏈結一般只會在client server之間傳遞一...