🗣 Wd提问: go获取ip地址
🤖 Ai回答: 在Go语言中,获取IP地址通常涉及到处理网络连接或查询系统信息。这里提供两种常见的方法来获取IP地址:
1、获取本地机器的所有IPv4和IPv6地址
你可以使用`net`包中的`Interfaces`和`Addrs`函数来获取本机所有接口(包括回环地址)上的IP地址。
go
package main
import (
fmt
net
)
func main() {
// 获取所有网络接口
ifaces, err := net.Interfaces()
if err != nil {
fmt.Println(Error getting interfaces:, err)
return
}
for _, iface := range ifaces {
// 忽略回环接口
if iface.Flags&net.FlagUp == 0 iface.Flags&net.FlagLoopback != 0 {
continue
}
addrs, err := iface.Addrs()
if err != nil {
fmt.Printf(Error getting addresses for interface %s: %v\n, iface.Name, err)
continue
}
for _, addr := range addrs {
var ip net.IP
switch v := addr.(type) {
case *net.IPNet:
ip = v.IP
case *net.IPAddr:
ip = v.IP
}
// 根据需要打印IPv4或IPv6地址
if ip.To4() != nil {
fmt.Printf(Interface %s: IPv4 %s\n, iface.Name, ip.String())
} else if ip.To16() != nil {
fmt.Printf(Interface %s: IPv6 %s\n, iface.Name, ip.String())
}
}
}
}
这段代码会列出所有活动的、非回环网络接口及其IP地址。
2、获取外部可见的IP地址
获取外部可见的IP地址通常需要向外部服务发送请求,并解析响应以提取你的公共IP地址。一个常用的免费服务是 `https://api.ipify.org`。
go
package main
import (
fmt
io/ioutil
net/http
)
func main() {
resp, err := http.Get(https://api.ipify.org)
if err != nil {
fmt.Println(Error getting IP:, err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println(Error reading response body:, err)
return
}
fmt.Println(Your public IP address is:, string(body))
}
这段代码通过HTTP GET请求访问`https://api.ipify.org`,该服务返回请求者的公共IP地址。请注意,使用外部服务获取IP可能会有隐私和安全方面的考虑。
以上就是用Go语言获取IP地址的两种基本方法:一种是获取本地所有接口的IP地址,另一种是获取外部可访问的公共IP地址。
📣 商家广告:





0
IP地址: 206.57.181.223
搜索次数: 13
提问时间: 2025-11-25 06:38:23
本站所有
❓
问答
均由Ai自动分析整理,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。
本站由
🟢
豌豆Ai
提供技术支持,使用的最新版:
豌豆Ai站群搜索引擎系统 V.25.10.25
搭建本站。