golang 获取本机 ip

发布时间:2024-07-04 23:56:12

使用Golang获取本机IP地址 在Golang开发中,有时候我们需要获取本机的IP地址以进行一些网络相关的操作。那么,在本文中,我将向你介绍如何使用Golang来获取本机的IP地址。

获取内网IP地址

首先,我们来获取本机的内网IP地址。内网IP地址是指在一个私有网络中用于通信的IP地址,通常用于局域网或家庭网络中。

Golang提供了net包来处理网络相关的操作,我们可以使用该包中的接口和函数来获取本机的IP地址。

```go package main import ( "fmt" "net" ) func main() { addrs, err := net.InterfaceAddrs() if err != nil { panic(err) } for _, addr := range addrs { ipNet, ok := addr.(*net.IPNet) if ok && !ipNet.IP.IsLoopback() && ipNet.IP.To4() != nil { fmt.Println(ipNet.IP.String()) } } } ``` 在上面的代码中,我们使用了net包中的InterfaceAddrs函数来获取本地网络接口的地址信息。然后,我们遍历这些地址,判断是否是IPNet类型,并且排除回环地址和IPv6地址,最后打印出IPv4地址。

获取公网IP地址

接下来,我们来获取本机的公网IP地址。公网IP地址是指可以直接访问互联网的IP地址,通常由互联网服务提供商分配给用户。

要获取公网IP地址,我们可以使用一些第三方的网络服务来帮助我们。例如,httpbin.org提供了一个API接口,我们可以通过发送HTTP请求来获取本地的公网IP地址。

```go package main import ( "fmt" "io/ioutil" "net/http" ) func main() { resp, err := http.Get("https://httpbin.org/ip") if err != nil { panic(err) } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { panic(err) } fmt.Println(string(body)) } ``` 在上面的代码中,我们发送了一个GET请求到httpbin.org的IP接口,然后读取响应的Body部分并打印出来。这样,就能够获取到本机的公网IP地址了。

总结

通过以上的示例代码,我们了解了如何使用Golang来获取本机的IP地址。我们可以通过net包中的函数来获取内网IP地址,也可以利用第三方的网络服务来获取公网IP地址。

Golang提供了丰富的标准库,特别是在网络编程方面,可以方便地进行各种网络相关的操作。希望本文对你理解和应用Golang来获取本机IP地址有所帮助。

相关推荐