一个 ip 地址(互联网协议地址)是分配给连接到网络的设备的唯一标识符,允许它们通过互联网或局域网与其他设备通信。
如何使用 go 获取你的 ip 地址呢?
公共 ip 地址 vs 私有 ip 地址
公共 ip 地址是分配给连接互联网的设备的,用于全球访问。它对互联网上的所有人可见,并用于外部识别设备。相反,私有(本地)ip 地址用于在私有网络内识别设备,仅在该私有网络内用于通信,外部不可见。
如何在 go 中获取公共 ip 地址
在 go 中,可以使用 net/http 包发起 http 请求,从外部 api 获取公共 ip 地址。
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func main() {
response, err := http.get("https://api.ipquery.io")
if err != nil {
fmt.println("获取公共 ip 时出错:", err)
return
}
defer response.body.close()
body, _ := ioutil.readall(response.body)
fmt.println("- ip 地址:", string(body))
}如何在 go 中获取本地 ip 地址
要获取本地 ip 地址,可以使用 net 包并检索网络接口,检查系统的本地 ip 地址。
package main
import (
"fmt"
"net"
)
func main() {
addrs, err := net.interfaceaddrs()
if err != nil {
fmt.println("出错:", err)
return
}
for _, addr := range addrs {
if ipnet, ok := addr.(*net.ipnet); ok && !ipnet.ip.isloopback() {
if ipnet.ip.to4() != nil {
fmt.println("- ip 地址:", ipnet.ip.string())
}
}
}
}参考来源
- https://pkg.go.dev/net
- https://www.fortinet.com/resources/cyberglossary/what-is-ip-address
- https://en.wikipedia.org/wiki/ip_address
到此这篇关于如何使用 go 获取你的 ip 地址的文章就介绍到这了,更多相关go 获取 ip 地址内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论