zhangzengfei
2024-03-30 e9e0c1f3abf1bbf83ebdb933d318caa2a45c15b0
util/util.go
@@ -8,34 +8,34 @@
)
// 获取本机网卡IP
func GetLocalIP(networkName string) (ipv4 string,mask string, err error) {
func GetLocalIP(networkName string) (ipv4 string, mask string, err error) {
   interfaces, err := net.Interfaces()
   if err != nil {
      return "","", err
      return "", "", err
   }
   for _, i := range interfaces {
      byName, err := net.InterfaceByName(i.Name)
      if err != nil {
         return "","", err
         return "", "", err
      }
      addresses, err := byName.Addrs()
      for _, v := range addresses {
         if ipnet, ok:=v.(*net.IPNet);ok && !ipnet.IP.IsLoopback(){
            if ipnet.IP.To4() !=nil{
               if byName.Name == networkName{
         if ipnet, ok := v.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
            if ipnet.IP.To4() != nil {
               if byName.Name == networkName {
                  maskStr := ipnet.Mask.String()
                  mask64, _ := strconv.ParseUint(maskStr, 16, 32)
                  return ipnet.IP.String(),IpIntToString(int(mask64)),nil
                  return ipnet.IP.String(), IpIntToString(int(mask64)), nil
               }
            }
         }
      }
   }
   return "","", errors.New("ipv4 not found")
   return "", "", errors.New("ipv4 not found")
}
func IpIntToString(ipInt int) string{
func IpIntToString(ipInt int) string {
   ipSegs := make([]string, 4)
   var len int = len(ipSegs)
   buffer := bytes.NewBufferString("")
@@ -53,3 +53,20 @@
   }
   return buffer.String()
}
// 判断一个数组是否包含另一个数组的所有元素
func ArrayContains(list []string, arr []string) bool {
   c := 0
   if arr == nil || list == nil {
      return false
   }
   for _, s := range arr {
      for _, t := range list {
         if s == t {
            c++
            break
         }
      }
   }
   return c == len(arr)
}