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

news/2024/9/22 5:37:44

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

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

公共 IP 地址 vs 私有 IP 地址

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

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

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

package mainimport ("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 mainimport ("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 发布!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/61579.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

macOS Sequoia 15.0 (24A335) Boot ISO 原版可引导镜像下载

macOS Sequoia 15.0 (24A335) Boot ISO 原版可引导镜像下载macOS Sequoia 15.0 (24A335) Boot ISO 原版可引导镜像下载 iPhone 镜像、Safari 浏览器重大更新、备受瞩目的游戏和 Apple Intelligence 等众多全新功能令 Mac 使用体验再升级 请访问原文链接:https://sysin.org/blo…

macOS Sonoma 14.7 (23H124) Boot ISO 原版可引导镜像下载

macOS Sonoma 14.7 (23H124) Boot ISO 原版可引导镜像下载macOS Sonoma 14.7 (23H124) Boot ISO 原版可引导镜像下载 2024 年 9 月 17 日凌晨 1 点,Tim Cook 领导的 Apple 今天发布了 macOS 15 Sequoia 正式版,iPhone 镜像、密码应用程序、窗口平铺更新等带来全新体验。Apple…

macOS Ventura 13.7 (22H123) Boot ISO 原版可引导镜像下载

macOS Ventura 13.7 (22H123) Boot ISO 原版可引导镜像下载macOS Ventura 13.7 (22H123) Boot ISO 原版可引导镜像下载 2024 年 9 月 17 日凌晨 1 点,Tim Cook 领导的 Apple 今天发布了 macOS 15 Sequoia 正式版,iPhone 镜像、密码应用程序、窗口平铺更新等带来全新体验。App…

VMware Tanzu Kubernetes Grid 2.5.2 发布下载,新增功能概览

VMware Tanzu Kubernetes Grid 2.5.2 发布下载,新增功能概览VMware Tanzu Kubernetes Grid 2.5.2 发布下载,新增功能概览 VMware Tanzu Kubernetes Grid (TKG) 2.5.2 - 企业级 Kubernetes 解决方案 VMware 构建、签名和支持的开源 Kubernetes 容器编排平台的完整分发版 请访问…

代码整洁之道--读书笔记(12)

代码整洁之道简介: 本书是编程大师“Bob 大叔”40余年编程生涯的心得体会的总结,讲解要成为真正专业的程序员需要具备什么样的态度,需要遵循什么样的原则,需要采取什么样的行动。作者以自己以及身边的同事走过的弯路、犯过的错误为例,意在为后来者引路,助其职业生涯迈上更…

解密Prompt系列38.多Agent路由策略

常见的多智能体框架有协作模式,路由模式,复杂交互模式等等,这一章我们围绕智能体路由,也就是如何选择解决当前任务最合适的智能体展开,介绍基于领域,问题复杂度,和用户偏好进行智能体选择的几种方案常见的多智能体框架有几类,有智能体相互沟通配合一起完成任务的例如Ch…

读构建可扩展分布式系统:方法与实践07无服务器处理系统

无服务器处理系统1. 无服务器的魅力 1.1. 对于某些应用程序,负载在工作时间可能很高,而在非工作时间可能很低或者不存在 1.2. 其他应用程序后台流量可能在99%的时间里都很低1.2.1. 一旦到了一些大型节目的门票发布时间,负载需求可能会在数小时内飙升至平均水平的10000倍,然…