php小編小新在這裡為大家介紹如何使用Golang取得自己的wifi IP位址。 Golang是一種高效且簡潔的程式語言,它提供了許多方便的方法來處理網路相關的任務。要取得wifi IP位址,我們可以使用Golang的net套件和os/exec套件來執行一些系統指令。透過一些簡單的程式碼,我們就可以取得到我們所連接的wifi的IP位址了。下面就讓我們來看看具體的實作過程吧!
func getLocalIP() ([]string, error) { addrs, err := net.InterfaceAddrs() if err != nil { return nil, err } IPs := make([]string, 0) for _, a := range addrs { if ipNet, ok := a.(*net.IPNet); ok && !ipNet.IP.IsLoopback() { if ipNet.IP.To4() != nil { IPs = append(IPs, ipNet.IP.To4().String()) } } } return IPs, nil } func TestGetLocalIP() { addrs, _ := getLocalIP() for _, a := range addrs { fmt.Println(a) } }
我用過這個,但它給了我一個 ip 位址清單。
我只想取得我的 wifi 本地地址,該怎麼做?
您需要至少了解其中的兩個資訊之一:
en0
,例如,但 ymmv)ifs, _ := net.interfaces() for _, ifi := range ifs { if ifi.name == "en0" { // or whatever other filter you want addrs, _ := ifi.addresses() for _, a := range addrs { // filter to get the one you want, typically unicast ip4 } } }
更簡單:
if, _ := net.interfacebyname("en0") addrs, _ := if.addresses() for _, a := range addrs { // as before, filter for the address you want }
// Loop over interfaces, get addrs, then loop over addresses and get IPs for those that have them if ip.Mask(net.CIDRMask(16, 32)) == myNetworkAddress { // The interface you got this IP from is probably your wifi interface }
依賴具有特定名稱的介面通常不會是可移植的。因此,雖然我的假設是您只是想在自己的工作站上運行它,但如果這是需要跨多個主機運行的東西,您可能至少需要從匹配正確的網路位址開始。還有其他技巧- 如果你知道的話假設您將在一個伺服器場中運行,其中每台主機都有來自製造商xxx 的nic,您可以查找mac 地址並查看它是否來自該製造商- 您可以嘗試一下此處。您也可以使用其他過濾器,但這些過濾器將非常適合您的個人用例。
以上是如何使用 Golang 取得我的 wifi IP 位址?的詳細內容。更多資訊請關注PHP中文網其他相關文章!