用golang写一个获取ip地址的方法
时间: 2024-05-25 08:16:44 浏览: 21
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 ""
}
相关问题
golang用gopsutil写一段代码获取网关地址
可以的,以下是示例代码:
```go
package main
import (
"fmt"
"net"
"os"
"github.com/shirou/gopsutil/netstat"
)
func main() {
addrs, err := net.InterfaceAddrs()
if err != nil {
fmt.Println(err)
os.Exit(1)
}
for _, addr := range addrs {
if ipnet, ok := addr.(*net.IPNet); ok && !ipnet.IP.IsLoopback() && ipnet.IP.To4() != nil {
connections, err := netstat.TCPSocks(func(s *netstat.SockTabEntry) bool {
return s.LocalAddr.IP.Equal(ipnet.IP)
})
if err != nil {
fmt.Println(err)
os.Exit(1)
}
for _, conn := range connections {
if conn.Status == netstat.Established {
fmt.Println(conn.RAddr.IP.String())
os.Exit(0)
}
}
}
}
fmt.Println("Unable to determine gateway address.")
os.Exit(1)
}
```
该代码利用 gopsutil 库获取网卡 IP 地址,并通过 netstat 库获取已建立的 TCP 连接信息,从而确定与网关连接的远程 IP 地址。
golang获取IP地址
在 Golang 中获取 IP 地址可以使用 `net` 包。下面是一个示例代码,演示了如何获取本地 IP 地址和远程连接的 IP 地址:
```go
package main
import (
"fmt"
"net"
)
func main() {
// 获取本地 IP 地址
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("本地 IP 地址:", ipNet.IP.String())
}
}
// 获取远程连接的 IP 地址
conn, err := net.Dial("tcp", "google.com:80")
if err != nil {
fmt.Println(err)
return
}
defer conn.Close()
remoteAddr := conn.RemoteAddr().(*net.TCPAddr)
fmt.Println("远程连接的 IP 地址:", remoteAddr.IP.String())
}
```
以上代码首先通过 `net.InterfaceAddrs()` 函数获取本地所有 IP 地址,然后通过过滤和判断条件获取非回环地址,并打印输出。接下来通过 `net.Dial()` 函数建立一个与远程服务器的连接,然后通过 `conn.RemoteAddr()` 方法获取远程连接的 IP 地址,并打印输出。
请注意,获取远程连接的 IP 地址需要进行网络连接操作,因此示例代码中使用了 Google 的地址作为示例。你可以根据自己的需要修改为其他可连接的地址。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)