net.go 687 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package mhayaNet
  2. import (
  3. "net"
  4. "sync"
  5. )
  6. var localIPv4Str = "0.0.0.0"
  7. var localIPv4Once = new(sync.Once)
  8. func LocalIPV4() string {
  9. localIPv4Once.Do(func() {
  10. if ias, err := net.InterfaceAddrs(); err == nil {
  11. for _, address := range ias {
  12. if ipNet, ok := address.(*net.IPNet); ok && !ipNet.IP.IsLoopback() {
  13. if ipNet.IP.To4() != nil {
  14. localIPv4Str = ipNet.IP.String()
  15. return
  16. }
  17. }
  18. }
  19. }
  20. })
  21. return localIPv4Str
  22. }
  23. func GetIPV4(addr net.Addr) string {
  24. if addr == nil {
  25. return ""
  26. }
  27. if ipNet, ok := addr.(*net.TCPAddr); ok {
  28. return ipNet.IP.String()
  29. }
  30. if ipNet, ok := addr.(*net.UDPAddr); ok {
  31. return ipNet.IP.String()
  32. }
  33. return ""
  34. }