實戰經驗分享 一勞永逸的解決網線隨意熱插拔問題

2022-06-05 18:57:10 字數 1180 閱讀 6153

說明:

網線熱插拔是實際專案中經常會遇到的問題,熱插拔又有各種各樣的情況要具體處理,這裡分享一種實用性方案。

熱插拔的問題種類:

1、上電前,網線還沒有插入,上電後插入如何處理。

2、伺服器模式使用時,檢測到斷開網線了,重新插入如何處理。

3、客戶端模式時,檢測到網線斷開了,重新插入如何處理。

4、長時間斷開,比如1個小時以上,重新插入後協議棧無法正常執行如何處理。

5、將網線從乙個網路環境切換到另乙個網路環境。

這幾個問題,如果具體問題都配乙個具體的解決方案就太繁瑣了。而且邏輯關係不容易捋順。

解決辦法:

這裡為大家分享一種解決辦法,以新版的rl-tcpnet v7.x為例。

1、有個專門的網路插拔通知函式  ,通過這個函式可以方便的了解網路插拔資訊。

2、然後還有個初始化函式netinitialize()和復位初始化函式netuninitialize(),其中這個復位初始化函式尤其好用,在檢測到網線被拔掉後,呼叫此函式會釋放所有使用者使用的網路資源,並刪除乙太網介面任務和協議棧核心任務。

3、最後就是使用者自己建立的各種應用任務,我們這裡在檢測到網線拔掉後直接將其刪除即可(優先呼叫網路復位任何後再刪),檢測到網線插入後重新建立。

具體處理:

網路插拔訊息函式,這裡直接設定乙個全域性變數來標識插拔狀態。

當然,追求執行效率,也可以採用任務訊號量,事件標誌等方式,這裡沒有採用的原因是大家自己移植的時候很容易出現沒有建立任務元件就去使用了。

專門開闢乙個網路初始化和檢測任務來處理插拔問題:

實際測試效果比較滿意,這樣就不用具體情況具體分析了,直接所有問題全部被處理了。

VUE一勞永逸的元件註冊

我們寫了一堆基礎ui元件,然後每次我們需要使用這些元件的時候,都得先import,然後宣告components,很繁瑣!秉持能偷懶就偷懶的原則,我們要想辦法優化!招式解析 我們需要借助一下神器webpack,使用 require.context 方法來建立自己的 模組 上下文,從而實現自動動態req...

一勞永逸的搞定 flex 布局

一切都始於這樣乙個問題 怎樣通過 css 簡單而優雅的實現水平 垂直同時居中。記得剛開始學習 css 的時候,看到float屬性不由得感覺眼前一亮,順理成章的聯想到 word 文件排版中用到的的左對齊 右對齊和居中對齊,然而很快就失望的發現 css 中並不存在float center的寫法,那麼te...

Qt中中文字元 一勞永逸的解決方法

qt中中文字元問題,有沒有一勞永逸的解決方法?目前遇到有以下問題 1 字串中有中文時,編譯提示 常量中含有換行符 2 在控制台視窗輸出中文時無法正常顯示,中文全部顯示為?目前第乙個問題通過記事本開啟檔案,再儲存,可解決 也可以用notepad 全部選中整個 然後選擇 編碼 使用utf 8 bom 編...