host.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package util
  2. import (
  3. "errors"
  4. "net"
  5. "os"
  6. )
  7. func AllIPV4() (ipv4s []string) {
  8. adders, err := net.InterfaceAddrs()
  9. if err != nil {
  10. return
  11. }
  12. for _, addr := range adders {
  13. if ipNet, ok := addr.(*net.IPNet); ok && !ipNet.IP.IsLoopback() {
  14. if ipNet.IP.To4() != nil {
  15. ipv4 := ipNet.IP.String()
  16. if ipv4 == "127.0.0.1" || ipv4 == "localhost" {
  17. continue
  18. }
  19. ipv4s = append(ipv4s, ipv4)
  20. }
  21. }
  22. }
  23. return
  24. }
  25. func GetLocalIP() (ip string, err error) {
  26. netInterfaces, err := net.Interfaces()
  27. if err != nil {
  28. return
  29. }
  30. for i := 0; i < len(netInterfaces); i++ {
  31. if ((netInterfaces[i].Flags & net.FlagUp) != 0) && ((netInterfaces[i].Flags & net.FlagLoopback) == 0) {
  32. addresses, _ := netInterfaces[i].Addrs()
  33. for _, address := range addresses {
  34. if ipNet, ok := address.(*net.IPNet); ok && !ipNet.IP.IsLoopback() && ipNet.IP.To4() != nil {
  35. ip = ipNet.IP.String()
  36. return
  37. }
  38. }
  39. }
  40. }
  41. return ip, errors.New("can not get local localIP")
  42. }
  43. func CurrentServerHostName() string {
  44. name, err := os.Hostname()
  45. if err != nil {
  46. Errorf("[CurrentServerHostName] get os.Hostnam err, err=%v\n", err.Error())
  47. localIP, ipErr := GetLocalIP()
  48. if ipErr != nil {
  49. Errorf("[CurrentServerHostName] get GetLocalIP err, err=%v\n", ipErr.Error())
  50. return "127.0.0.1"
  51. }
  52. return localIP
  53. }
  54. return name
  55. }