ip.go 549 B

12345678910111213141516171819202122232425262728
  1. package utils
  2. import (
  3. "log"
  4. "net"
  5. )
  6. // 获取本机网卡IP
  7. func GetNetIP() (ipv4 string) {
  8. // 获取所有网卡
  9. addrs, err := net.InterfaceAddrs()
  10. if err != nil {
  11. log.Printf("InterfaceAddrs error: %v", err)
  12. return ""
  13. }
  14. // 取第一个非lo的网卡IP
  15. for _, addr := range addrs {
  16. // 这个网络地址是IP地址: ipv4, ipv6
  17. if ipNet, isIpNet := addr.(*net.IPNet); isIpNet && !ipNet.IP.IsLoopback() {
  18. // 跳过IPV6
  19. if ipNet.IP.To4() != nil {
  20. ipv4 = ipNet.IP.String() // 192.168.1.1
  21. return
  22. }
  23. }
  24. }
  25. return ""
  26. }