如何使用 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())
            }
        }
    }
}
参考来源
相关推荐
阿正的梦工坊3 分钟前
JavaScript 闭包:从入门到精通
开发语言·javascript·ecmascript
qq_12084093714 分钟前
Three.js 性能实战:大场景从 15FPS 到 60FPS 的工程化优化路径
开发语言·前端·javascript
codeejun6 分钟前
每日一Go-51、Go微服务--API网关-Kong
微服务·golang·kong
小张同学82416 分钟前
[特殊字符]Python 进阶实战指南(PyCharm 专属优化):从高效编码到工程化落地,告别新手低效写法
开发语言·python·pycharm
神奇小汤圆17 分钟前
从两套系统到一条 SQL:SelectDB search() 搞定日志的搜索与分析
后端
梦想与想象-广州大智汇18 分钟前
告别“内存刺客”!sync-canal-go:轻量mysql实时同步数据到Elasticsearch‌,clickhouse,redis
mysql·elasticsearch·golang·同步数据
lly20240624 分钟前
PHP Math
开发语言
考虑考虑29 分钟前
SQL语句中的模糊查询注意
后端·sql·mysql
Java编程爱好者36 分钟前
spring的logback引用application配置文件的变量
后端
李日灐1 小时前
<1>Linux基础指令:Linux 高频指令详解 + 文件与目录认知
linux·运维·服务器·开发语言·后端·命令