2014-12-12 153 views
2

我需要監視網絡接口的本地地址(IP)(即每當它發生變化或接口拔掉時做一些事情),我想知道什麼是最好的方法來做到這一點。目前我使用InterfaceByName以無限循環的方式獲取並驗證/匹配接口細節。我監視幾個接口,所以我想知道這是不是一件壞事,或者我應該使用一些延遲等。如果操作系統在接口更新時發送信號,但我不知道這種情況,這將是非常好的。如何監視網絡接口(go-lang)

+0

您使用的平臺是什麼? – JimB 2014-12-12 23:54:07

+0

linux(any),儘管它也適用於Mac(僅適用於開發)。 – 2014-12-13 00:02:25

回答

0

這將是非常系統特定的。在Linux上,我認爲現在最簡單的方法是讀取每個接口的sysfs文件。

$ cat /sys/class/net/eth0/operstate 
up 
$ cat /sys/class/net/eth0/carrier 
1 

輪詢他們偶爾不應該消耗太多的資源,並給你你需要的東西。

要獲得更及時的更新,您可以設置一個netlink套接字以從內核接收NETLINK_ROUTE更新。有幾個Go netlink packages左右,但我不知道他們有多普遍。