有没有一个网站做黄油视频,移动应用程序开发,尚德机构,高端的网站建设公司文章目录 获取IPv4地址获取WLAN的IPv4地址获取本机公网IP地址 获取IPv4地址
下面的代码会打印出本机所有的IPv4地址。这个方法可能会返回多个IP地址#xff0c;因为一台机器可能有多个网络接口#xff0c;每个接口可能有一个或多个IP地址。
package mainimport (fmt因为一台机器可能有多个网络接口每个接口可能有一个或多个IP地址。
package mainimport (fmtnetos
)func main() {addrs, err : net.InterfaceAddrs()if err ! nil {fmt.Println(err)os.Exit(1)}for _, addr : range addrs {if ipnet, ok : addr.(*net.IPNet); ok !ipnet.IP.IsLoopback() {if ipnet.IP.To4() ! nil {fmt.Println(IPv4: , ipnet.IP.String())}}}
}运行结果
IPv4: 169.254.157.225
IPv4: 169.254.28.142
IPv4: 169.254.211.187
IPv4: 192.168.144.1
IPv4: 192.168.253.1
IPv4: 10.252.64.116
IPv4: 169.254.106.194
IPv4: 169.254.109.149
IPv4: 172.28.240.1甚至比我在终端使用ipconfig命令得到的IPv4地址还要多。
获取WLAN的IPv4地址
当然这么多IPv4地址并不一定都是我们想要的对于用wifi上网的电脑我们想获取无线局域网适配器 WLAN的IPv4地址可以按下面的代码操作
package mainimport (fmtnetos
)func main() {interfaces, err : net.Interfaces()if err ! nil {fmt.Println(err)os.Exit(1)}for _, i : range interfaces {if i.Name WLAN {addrs, err : i.Addrs()if err ! nil {fmt.Println(err)continue}for _, addr : range addrs {if ipnet, ok : addr.(*net.IPNet); ok !ipnet.IP.IsLoopback() {if ipnet.IP.To4() ! nil {fmt.Println(IPv4: , ipnet.IP.String())}}}}}
}运行结果
IPv4: 10.252.64.116经过和上图比对结果正确。
获取本机公网IP地址
那如果我们想获取本机的公网IP地址那该怎么操作呢我这里介绍两种方法
第一种方法将通过与Google的公共DNS服务器建立UDP连接来获取公网IP地址。
package mainimport (fmtnet
)func main() {conn, err : net.Dial(udp, 8.8.8.8:80)if err ! nil {fmt.Println(err)return}defer conn.Close()localAddr : conn.LocalAddr().(*net.UDPAddr)fmt.Println(My public IP address is:, localAddr.IP.String())
}运行结果
My public IP address is: 10.252.64.116经过比对结果正确。我们可以发现如果我们的电脑是用WiFi上网的用此方法得出的结果与WLAN的IPv4地址相同。
第二种方法依赖于第三方服务如果该服务不可用可能无法获取到IP地址。此外由于这个方法涉及到网络通信所以可能会比获取本地IP地址慢一些。同时该方法出错的风险也较高。
package mainimport (fmtio/ioutilnet/http
)func main() {resp, err : http.Get(https://api.ipify.org)if err ! nil {fmt.Println(err)return}defer resp.Body.Close()ip, err : ioutil.ReadAll(resp.Body)if err ! nil {fmt.Println(err)return}fmt.Println(My public IP address is: , string(ip))
}除了使用 https://api.ipify.org还有其他一些服务可以提供公网IP地址例如 https://ifconfig.me 和 https://icanhazip.com。