package util import ( "errors" "net" "os" ) func AllIPV4() (ipv4s []string) { adders, err := net.InterfaceAddrs() if err != nil { return } for _, addr := range adders { if ipNet, ok := addr.(*net.IPNet); ok && !ipNet.IP.IsLoopback() { if ipNet.IP.To4() != nil { ipv4 := ipNet.IP.String() if ipv4 == "127.0.0.1" || ipv4 == "localhost" { continue } ipv4s = append(ipv4s, ipv4) } } } return } func GetLocalIP() (ip string, err error) { netInterfaces, err := net.Interfaces() if err != nil { return } for i := 0; i < len(netInterfaces); i++ { if ((netInterfaces[i].Flags & net.FlagUp) != 0) && ((netInterfaces[i].Flags & net.FlagLoopback) == 0) { addresses, _ := netInterfaces[i].Addrs() for _, address := range addresses { if ipNet, ok := address.(*net.IPNet); ok && !ipNet.IP.IsLoopback() && ipNet.IP.To4() != nil { ip = ipNet.IP.String() return } } } } return ip, errors.New("can not get local localIP") } func CurrentServerHostName() string { name, err := os.Hostname() if err != nil { Errorf("[CurrentServerHostName] get os.Hostnam err, err=%v\n", err.Error()) localIP, ipErr := GetLocalIP() if ipErr != nil { Errorf("[CurrentServerHostName] get GetLocalIP err, err=%v\n", ipErr.Error()) return "127.0.0.1" } return localIP } return name }