[C#]使用InternetGetConnectedState API偵測目前電腦網路的連線狀態
有時候我們會有需要為程式加入偵測網路連線的能力,也許是當網路不通時秀些提示,或是將某些程式的功能給停用。這時我們可能會傾向採用NetworkChange.NetworkAddressChanged與NetworkChange.NetworkAvailabilityChanged這兩個事件去偵測網路環境是否有所變動,或者用Timer加Ping的方式去偵測網路是否可以外連。上面兩種方式在.NET程式中還算滿常用的方法,但是以筆者的經驗來說NetworkChange在多網卡環境下運作跟期望的可能會有所出入,而就算事件正常觸發也可能需搭配其它方法偵測網路是否是通的,至於Ping的偵測方式,它需要實際的去送封包偵測,不僅需考慮可能會被封鎖,也要考慮封包傳送的額外負擔,如果能直接跟系統詢問連線狀態一定會比較好一點。所以在做類似的功能時使用InternetGetConnectedState API可能也是一個不錯的選擇,這邊隨手將之稍微紀錄一下。 ...