写一个golang代码获取本机的外网IP
时间: 2024-06-10 12:06:31 浏览: 11
您好!以下是获取本机外网IP的Golang代码:
```
package main
import (
"fmt"
"net/http"
"io/ioutil"
"strings"
)
func main() {
resp, err := http.Get("http://myexternalip.com/raw")
if err != nil {
fmt.Println("获取外网IP失败:", err)
return
}
defer resp.Body.Close()
ip, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("读取响应失败:", err)
return
}
fmt.Println(strings.TrimSpace(string(ip)))
}
```
以上代码中,我们向 `http://myexternalip.com/raw` 发送 HTTP 请求,该网站会返回当前机器的外网IP地址。我们将响应读取出来,并将其打印输出即可。
相关问题
golang获取本机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 {
ipnet, ok := addr.(*net.IPNet)
if ok && !ipnet.IP.IsLoopback() && ipnet.IP.To4() != nil {
fmt.Println(ipnet.IP.String())
}
}
}
```
该代码会输出本机所有IPv4地址。
用golang写一个获取ip地址的方法
func getIP() string {
addrs, err := net.InterfaceAddrs()
if err != nil {
return ""
}
for _, addr := range addrs {
if ipnet, ok := addr.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
if ipnet.IP.To4() != nil {
return ipnet.IP.String()
}
}
}
return ""
}