Gin:获取本机IP,获取访问IP

获取本机IP

复制代码
func GetLocalIP() []string {
  var ipStr []string
  netInterfaces, err := net.Interfaces()
  if err != nil {
      fmt.Println("net.Interfaces error:", err.Error())
      return ipStr
  }

  for i := 0; i < len(netInterfaces); i++ {
      if (netInterfaces[i].Flags & net.FlagUp) != 0 {
          addrs, _ := netInterfaces[i].Addrs()
          for _, address := range addrs {
              if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
                  //获取IPv6
                  /*if ipnet.IP.To16() != nil {
                      fmt.Println(ipnet.IP.String())
                      ipStr = append(ipStr, ipnet.IP.String())

                  }*/
                  //获取IPv4
                  if ipnet.IP.To4() != nil {
                      fmt.Println(ipnet.IP.String())
                      ipStr = append(ipStr, ipnet.IP.String())

                  }
              }
          }
      }
  }
  return ipStr

}

获取访问IP

复制代码
  //获取ip
func GetRequestIP(c *gin.Context)string{
    reqIP := c.ClientIP()
  if reqIP == "::1" {
      reqIP = "127.0.0.1"
  }
    return reqIP
}

参考来源:

go+gin获取本机ip和获取访问ip - 简书

相关推荐
Mr. Sun_6 小时前
Dell Networking SmartFabric OS10 如何设置虚拟链路中继 (VLT)
运维·网络·dell vlt
汪汪大队u7 小时前
IPv4与IPv6的对比
运维·网络·智能路由器
Tony Bai8 小时前
【Go 网络编程全解】13 从 HTTP/1.1 到 gRPC:Web API 与微服务的演进
开发语言·网络·http·微服务·golang
tan180°8 小时前
Linux网络UDP(10)
linux·网络·后端·udp·1024程序员节
qq_310658519 小时前
webrtc源码走读(一)-QOS-NACK-概述
网络·webrtc
若尘拂风10 小时前
FreeSWITCH配置文件解析(11) 模块配置文件(modules.conf)
服务器·tcp/ip·udp·freeswitch
易ლ拉罐10 小时前
【计算机网络】HTTP协议(二)——超文本传输协议
网络·计算机网络·http·1024程序员节
极客范儿11 小时前
新华三H3CNE网络工程师认证—STP状态机与收敛过程
服务器·网络·stp·1024程序员节
LCMICRO-1331084774611 小时前
长芯微LDUM3160完全P2P替代ADUM3160,LDUM3160是一款采用ADI公司iCoupler® 技术的USB端口隔离器
网络·stm32·单片机·嵌入式硬件·网络协议·fpga开发·硬件工程
威迪斯特11 小时前
网络环路:隐形威胁的破解之道
网络·流量分析·生成树协议·端口安全·路由过滤·网络环路·广播风暴