狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網站管理員

Socket之心跳包實現思路

admin
2021年3月3日 17:18 本文熱度 3578

由于最近要做一個客戶端,但是要求有一個掉線檢測的功能,下面讓我們看看使用自定義的HeartBeat方式來檢測客戶端的連接情況。

心跳包的實現思路:

客戶端連接上服務端后,在服務端會維護一個在線客戶端列表。客戶端每隔一段時間,向服務端發(fā)送一個心跳包,服務端受收到包以后,會更新客戶端最近一次在線時間。一旦服務端超過規(guī)定時間沒有接收到客戶端發(fā)來的包,則視為掉線。

代碼:

客戶端每隔一段時間,發(fā)送一個心跳包:

var timer = new System.Timers.Timer();

timer.Interval = 60000;  //1m觸發(fā)一次

timer.Start();

timer.Elapsed += (sender, args) =>

{

   Console.WriteLine("開始發(fā)送心跳包");

   MMessage message = new MMessage();

   message.MessageType = MessagePicks.Heartbeat;

   // message.From = loginName;

  WriteToStream(message);

};


服務端每隔一段時間檢測:

var timer = new Timer();

timer.Interval = 60000;  //1m觸發(fā)一次

timer.Start();

timer.Elapsed += (sender, args) =>

{

    List<MClient> offClients = new List<MClient>();

   foreach (var client in clients)

    {

        if ((DateTime.Now - client.LastOnLine).TotalMinutes > 1)

        {

            Console.WriteLine("用戶" + client.Name + "掉線!");

            offClients.Add(client);

        }

    }

   foreach (var offClient in offClients)

    {

        clients.Remove(offClient);

    }

};


服務端收到心跳包的處理邏輯:

Console.WriteLine("收到客戶端" + msg.RemoteEndPoint + "的心跳回應包.");

client.LastOnLine = DateTime.Now;  //收到心跳包,更新時間

client.Name = msg.RemoteEndPoint.ToString();

client.RemoteEndPoint = msg.RemoteEndPoint;

if (!clients.Contains(client))

{

   clients.Add(client);

}


該文章在 2021/3/3 17:18:07 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業(yè)務管理,結合碼頭的業(yè)務特點,圍繞調度、堆場作業(yè)而開發(fā)的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統(tǒng),標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved