考慮下面的代碼:如何獲取分配給本機的所有IP地址?
// iptest
package main
import (
"fmt"
"net"
"os"
)
func main() {
host, _ := os.Hostname()
addrs, _ := net.LookupIP(host)
for _, addr := range addrs {
if ipv4 := addr.To4(); ipv4 != nil {
fmt.Println("IPv4: ", ipv4)
}
}
}
我有一個問題,即它只返回分配給適配器的第一個IP地址。這僅在具有已定義的DNS後綴的系統上出現問題。如果沒有定義,它會正常工作並報告已分配的所有IP。
'LookupIP'只能通過給定主機名的解析器查找IP地址。它對什麼IP綁定到什麼接口一無所知。 – JimB
謝謝@JimB。任何想法爲什麼它可以在沒有定義DNS後綴的系統上正常工作? – siliconghost
如果它沒有DNS名稱,那可能意味着它在/ etc/hosts中列出,或者通過/etc/nsswitch.conf通過另一種機制查找。如果你想要所有的本地IP地址,那麼你必須自己列舉它們。 – JimB