分享golang获取本机公网与内网ip地址的几种代码
go获取公网ip代码
package main import ( "fmt" "io/ioutil" "net/http" ) func main() { resp, err := http.Get("https://api.ipify.org") if err != nil { fmt.Println("Error:", err) return } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Println("Error:", err) return } fmt.Println("Public IP Address:", string(body)) }
go获取内网ip地址代码
package main import ( "fmt" "net" ) func main() { addrList, err := net.InterfaceAddrs() if err != nil { panic(err) } for _, address := range addrList { if ipNet, ok := address.(*net.IPNet); ok && !ipNet.IP.IsLoopback() { if ipNet.IP.To4() != nil { fmt.Println(ipNet.IP.String()) } } } }2还有一种
package main import ( "fmt" "net" "strings" ) func main() { conn, err := net.Dial("udp", "8.8.8.8:53") if err != nil { panic(err) } addr := conn.LocalAddr().(*net.UDPAddr) ip := strings.Split(addr.String(), ":")[0] fmt.Println(ip) }
网友评论