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

cnblogs 2024-09-18 09:13:00 阅读 96

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

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

公共 IP 地址 vs 私有 IP 地址

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

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

在 Go 中,可以使用 <code>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 发布!



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。