go语言中怎么获取域名对应的ip地址

Python016

go语言中怎么获取域名对应的ip地址,第1张

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 二进制文件在私有化部署中,需要对客户的服务器mac和ip进行绑定,系统只能运行在绑定的服务器上。把mac和ip地址配置到config中。

运行效果:系统可正常编译,正常访问,在用户Auth接口进行核对。

//检验Mac和内网IP,测试环境不做校验

func (c *CommonBase)CheckMacAndIp()error {

ipCfg :=g.Cfg().GetString("machine.Ipaddr")

macCfg :=g.Cfg().GetString("machine.Macip")

if ipCfg =="127.0.0.1" {

return nil

}

macArray,_ :=gipv4.GetMacArray()

if len(macArray) ==0 {

return gerror.New("mac地址获取失败")

}

if garray.NewStrArrayFrom(macArray).Contains(macCfg) ==false {

return gerror.New("示授权的应用MAC,请联系")

}

ipArray,_ :=gipv4.GetIpArray()

ipIntranetArray,_ :=gipv4.GetIntranetIpArray()

if len(ipArray) ==0 &&len(ipIntranetArray) ==0 {

return gerror.New("ip地址获取失败")

}

if garray.NewStrArrayFrom(ipArray).Merge(ipIntranetArray).Contains(ipCfg) ==false {

return gerror.New("示授权的应用IP,请联系")

}

return nil

}

项目使用GoFrame框架1.6。考虑到客户可能会对内存数据做分析破解,可以把mac和ip地址做AES加密。

在网络设备上,每家厂商表示ip的形式各不相同,但可能表示的是同一个意思,

列如

CIDR表示方法:IP地址/网络ID的位数,比如 10.95.134.192/29 ,其中用 29 位表示网络ID。