go中如何获取本机ip地址
作者:L小象
这篇文章主要介绍了go中如何获取本机ip地址问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
go获取本机ip地址
获取本机ip的方法:
//获取ip func externalIP() (net.IP, error) { ifaces, err := net.Interfaces() if err != nil { return nil, err } for _, iface := range ifaces { if iface.Flags&net.FlagUp == 0 { continue // interface down } if iface.Flags&net.FlagLoopback != 0 { continue // loopback interface } addrs, err := iface.Addrs() if err != nil { return nil, err } for _, addr := range addrs { ip := getIpFromAddr(addr) if ip == nil { continue } return ip, nil } } return nil, errors.New("connected to the network?") } //获取ip func getIpFromAddr(addr net.Addr) net.IP { var ip net.IP switch v := addr.(type) { case *net.IPNet: ip = v.IP case *net.IPAddr: ip = v.IP } if ip == nil || ip.IsLoopback() { return nil } ip = ip.To4() if ip == nil { return nil // not an ipv4 address } return ip }
调用:
func main() { ip, err := externalIP() if err != nil { fmt.Println(err) } fmt.Printf(ip.String()) }
结果:
Golang获取本机的Mac 和ip地址
获取本机的Mac 和ip地址
1.获取本机的MAC地址
代码如下(示例):
func GetLocalMac() (mac string) { // 获取本机的MAC地址 interfaces, err := net.Interfaces() if err != nil { panic("Poor soul, here is what you got: " + err.Error()) } for _, inter := range interfaces { fmt.Println(inter.Name) mac := inter.HardwareAddr //获取本机MAC地址 fmt.Println("MAC ===== ", mac) } fmt.Println("MAC = ", mac) return mac }
2.获取本机ip地址
代码如下(示例):
//获取本机ip地址 func GetIps() (ips []string) { interfaceAddr, err := net.InterfaceAddrs() if err != nil { fmt.Printf("fail to get net interfaces ipAddress: %v\n", err) return ips } for _, address := range interfaceAddr { ipNet, isVailIpNet := address.(*net.IPNet) if isVailIpNet && !ipNet.IP.IsLoopback() { if ipNet.IP.To4() != nil { ips = append(ips, ipNet.IP.String()) } } } fmt.Println("ips = ", ips) return ips }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。