Go 获取本地IP
package main import ( "fmt" "net" "os" ) func main() { addrs,err := net.InterfaceAddrs() if err != nil { fmt.Println(err) os.Exit(1) } for _,address := range addrs { // 检查ip地址判断是否回环地址 if ipnet,ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopBACk() { if ipnet.IP.To4() != nil { fmt.Println(ipnet.IP.String()) } } } }
如代码所示
Go语言获取外网和本地IP
package main import ( "flag" "fmt" "io" "net" "net/http" "os" ) var get_ip = flag("get_ip","","external|internal") func main() { fmt.Println("Usage of ./getmyip --get_ip=(external|internal)") flag.Parse() if *get_ip == "external" { get_external() } if *get_ip == "internal" { get_internal() } } func get_external() { resp,err := http.Get("http://myexternalip.com/raw") if err != nil { os.Stderr.WriteString(err.Error()) os.Stderr.WriteString("\n") os.Exit(1) } defer resp.body.Close() io.Copy(os.Stdout,resp.body) os.Exit(0) } func get_internal() { addrs,err := net.InterfaceAddrs() if err != nil { os.Stderr.WriteString("Oops:" + err.Error()) os.Exit(1) } for _,a := range addrs { if ipnet,ok := a.(*net.IPNet); ok && !ipnet.IP.IsLoopBACk() { if ipnet.IP.To4() != nil { os.Stdout.WriteString(ipnet.IP() + "\n") } } } os.Exit(0) }
大佬总结
以上是大佬教程为你收集整理的Golang学习之InterfaceAddrs获取本地IP全部内容,希望文章能够帮你解决Golang学习之InterfaceAddrs获取本地IP所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。