如何使用 Go 获取你的 IP 地址

一个 IP 地址(互联网协议地址)是分配给连接到网络的设备的唯一标识符,允许它们通过互联网或局域网与其他设备通信。

如何使用 Go 获取你的 IP 地址呢?

公共 IP 地址 vs 私有 IP 地址

公共 IP 地址 是分配给连接互联网的设备的,用于全球访问。它对互联网上的所有人可见,并用于外部识别设备。相反,私有(本地)IP 地址用于在私有网络内识别设备,仅在该私有网络内用于通信,外部不可见。

如何在 Go 中获取公共 IP 地址

在 Go 中,可以使用 net/http 包发起 HTTP 请求,从外部 API 获取公共 IP 地址。

go 复制代码
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 地址。

go 复制代码
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())
            }
        }
    }
}
参考来源
相关推荐
踏浪无痕2 分钟前
每天上亿条日志,Elasticsearch 是怎么扛住的?
后端·架构·设计
lenkco5 分钟前
修改QtConcurrent::run支持任意参数
开发语言·c++·qt
没有bug.的程序员6 分钟前
JVM 与 Docker:资源限制的真相
java·jvm·后端·spring·docker·容器
lkbhua莱克瓦247 分钟前
IO流——打印流
java·开发语言·前端·学习方法
思维新观察7 分钟前
谷歌发新 XR 设备:眼镜能识零食热量,头显能转 3D 影像
后端·xr·ai眼镜
申阳15 分钟前
Day 23:登录设计的本质:从XSS/CSRF到Session回归的技术演进
前端·后端·程序员
赵得C15 分钟前
软件设计师前沿考点精讲:新兴技术与性能优化实战
java·开发语言·分布式·算法·设计模式·性能优化
古城小栈21 分钟前
Spring Boot 4.0 虚拟线程启用配置与性能测试全解析
spring boot·后端·python
松莫莫23 分钟前
Spring Boot 整合 MQTT 全流程详解(Windows 环境)—— 从 Mosquitto 安装到消息收发实战
windows·spring boot·后端·mqtt·学习
缘三水26 分钟前
【C语言】17.字符函数和字符串函数
c语言·开发语言·语法