大佬教程收集整理的这篇文章主要介绍了Golang学习之InterfaceAddrs获取本地IP,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
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.String("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.String() + "\n")
}
}
}
os.Exit(0)
}
以上是大佬教程为你收集整理的Golang学习之InterfaceAddrs获取本地IP全部内容,希望文章能够帮你解决Golang学习之InterfaceAddrs获取本地IP所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。