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

說明:

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


熱插拔的問題種類:
一、上電前,網線尚未插入,上電後插入如何處理。
二、服務器模式使用時,檢測到斷開網線了,從新插入如何處理。
三、客戶端模式時,檢測到網線斷開了,從新插入如何處理。
四、長時間斷開,好比1個小時以上,從新插入後協議棧沒法正常運行如何處理。
五、將網線從一個網絡環境切換到另外一個網絡環境。

這幾個問題,若是具體問題都配一個具體的解決方案就太繁瑣了。並且邏輯關係不容易捋順。

解決辦法:
這裏爲你們分享一種解決辦法,以新版的RL-TCPnet V7.X爲例。
一、有個專門的網絡插拔通知函數  ,經過這個函數能夠方便的瞭解網絡插拔信息。
二、而後還有個初始化函數netInitialize()和復位初始化函數netUninitialize(),其中這個復位初始化函數尤爲好用,在檢測到網線被拔掉後,調用此函數會釋放全部用戶使用的網絡資源,並刪除以太網接口任務和協議棧內核任務。
三、最後就是用戶本身建立的各類應用任務,咱們這裏在檢測到網線拔掉後直接將其刪除便可(優先調用網絡復位任何後再刪),檢測到網線插入後從新建立。

具體處理:
網絡插拔消息函數,這裏直接設置一個全局變量來標識插拔狀態。
固然,追求執行效率,也能夠採用任務信號量,事件標誌等方式,這裏沒有采用的緣由是你們本身移植的時候很容易出現沒有建立任務組件就去使用了。
 

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

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

相關文章
相關標籤/搜索