ip.go•608 B
package utils
import "net"
// 获取本机所有 IPv4 地址
func GetLocalIPs() ([]string, error) {
var ips []string
interfaces, err := net.Interfaces()
if err != nil {
return nil, err
}
for _, i := range interfaces {
addrs, err := i.Addrs()
if err != nil {
continue
}
for _, addr := range addrs {
var ip net.IP
switch v := addr.(type) {
case *net.IPNet:
ip = v.IP
case *net.IPAddr:
ip = v.IP
}
// 过滤掉回环地址和 IPv6 地址
if ip != nil && !ip.IsLoopback() && ip.To4() != nil {
ips = append(ips, ip.String())
}
}
}
return ips, nil
}