如何使用 Go 获取你的 IP 地址
一个 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
本文由博客一文多发平台 OpenWrite 发布!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 我干了两个月的大项目,开源了!
· 推荐一款非常好用的在线 SSH 管理工具
· 千万级的大表,如何做性能调优?
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
· .NET周刊【1月第1期 2025-01-05】