當前位置:編程學習大全網 - 編程軟體 - 壹個簡易的心跳包 C# Socket (上)

壹個簡易的心跳包 C# Socket (上)

貌似 都註釋上了沒啥好說的, NowTimeSpan => Convert.ToInt64((DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds); 這個就是壹個只讀的寫法,每次讀取都會讀現在的時間與默認的時間差距秒,從而去計算心跳包的秒數

InitMax()就是初始化上限數值 超時次數 超時上限

UpdateHeat()就是更新心跳包的 重新賦值當前與默認時間的差距秒數, 如果過段時間不更新不更新當前持有的秒數也不會更新 在CheckHeat()檢測超過限定的超時時間MaxLostTime 就是增加壹次Lostcount超時次數

KGHeartBeatManage<T,R>:IDisposable where R:KGHeartBeat 這裏的T就是妳們定義的每個會話管理類,R就是指定要繼承KGHeartBeat 的

初始化事件 InitTimerEvent(第壹個委托就是發送事件,第二個委托就是 每個心跳包如果超時就會回調回來,每隔多少毫秒觸發壹次檢測,每隔多少毫秒發送心跳包)

然後StartTimer()就可以開始觸發了

這邊定時器那裏加了個每次都會檢測ConnectDic字典裏面儲存的心跳包,如果超過最大上限超時次數就會回調 KGHeartBeatManage裏面的第二個委托,告訴他這個連接已經超時,

AddConnectDic(對應的會話管理類,指定超時時間,超時次數)這裏會創建出對應的KGHeartBeat數據裏存在字典裏面,每個會話管理對應壹個心跳包數據

RemoveConnectDic(T obj) 這裏是移除字典裏面 該會話管理對應的心跳包

因為會有多線程觸發的問題這裏用了lock互斥鎖,排隊來,

/LKaiGuo/KGScriptGenerator 喜歡的給我點個星星啊

u3d萌新QQ群844087555 歡迎進來灌水=。=

  • 上一篇:VB設計壹個支持矩陣加減乘運算的程序
  • 下一篇:iphone自帶的ar在哪
  • copyright 2024編程學習大全網