golang获取服务器ip

发布时间:2024-11-05 17:25:30

标题:使用Golang获取服务器IP Golang是一种强大的编程语言,其拥有丰富的库和工具,方便开发者实现各种功能。本文将介绍如何使用Golang获取服务器IP,并提供相关代码示例。 ## 获取本地IP 获取本地IP地址是网络编程中常见的需求之一。通过Golang,可以轻松地实现此功能。下面是一个简单的示例代码: ```go package main import ( "fmt" "net" ) func main() { addrs, err := net.InterfaceAddrs() if err != nil { fmt.Println(err) return } for _, address := range addrs { // 检查IP地址是否为IPv4或IPv6 if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() { if ipnet.IP.To4() != nil { fmt.Println("IPv4:", ipnet.IP.String()) } else if ipnet.IP.To16() != nil { fmt.Println("IPv6:", ipnet.IP.String()) } } } } ``` 上述代码通过`net.InterfaceAddrs()`函数获取所有网络接口的地址,并进行筛选和打印。如果IP地址为IPv4,则输出"IPv4: IP地址";如果IP地址为IPv6,则输出"IPv6: IP地址"。 ## 获取公网IP 如果需要获取公网IP地址,可以通过访问第三方接口来实现。下面是一个示例代码,通过访问`https://api.ipify.org`接口获取公网IP: ```go package main import ( "fmt" "io/ioutil" "net/http" ) func main() { resp, err := http.Get("https://api.ipify.org") if err != nil { fmt.Println(err) return } defer resp.Body.Close() ip, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Println(err) return } fmt.Println("Public IP:", string(ip)) } ``` 上述代码通过`http.Get()`函数发送GET请求到`https://api.ipify.org`接口,并读取响应内容。最后输出获取到的公网IP地址。 ## 获取其他服务器IP 除了获取本地IP和公网IP,有时候也需要获取其他服务器的IP地址。在Golang中,可以使用`net.LookupHost()`函数实现。下面是一个示例代码,用于获取特定域名的IP地址列表: ```go package main import ( "fmt" "net" ) func main() { ips, err := net.LookupHost("www.example.com") if err != nil { fmt.Println(err) return } for _, ip := range ips { fmt.Println("IP:", ip) } } ``` 上述代码将通过`net.LookupHost()`函数查询`www.example.com`域名的IP地址列表,并依次输出。 以上就是使用Golang获取服务器IP的方法和示例代码。通过这些方法,我们可以轻松地获取本地IP、公网IP以及其他服务器的IP地址。Golang的网络编程库为开发者提供了强大的工具,方便实现各种网络功能。 希望本文能对正在使用Golang进行开发的开发者们提供帮助和指导。祝你编程愉快!

相关推荐