package util import ( "bytes" "errors" "net" "strconv" ) // 获取本机网卡IP func GetLocalIP(networkName string) (ipv4 string,mask string, err error) { interfaces, err := net.Interfaces() if err != nil { return "","", err } for _, i := range interfaces { byName, err := net.InterfaceByName(i.Name) if err != nil { 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{ maskStr := ipnet.Mask.String() mask64, _ := strconv.ParseUint(maskStr, 16, 32) return ipnet.IP.String(),IpIntToString(int(mask64)),nil } } } } } return "","", errors.New("ipv4 not found") } func IpIntToString(ipInt int) string{ ipSegs := make([]string, 4) var len int = len(ipSegs) buffer := bytes.NewBufferString("") for i := 0; i < len; i++ { tempInt := ipInt & 0xFF ipSegs[len-i-1] = strconv.Itoa(tempInt) ipInt = ipInt >> 8 } for i := 0; i < len; i++ { buffer.WriteString(ipSegs[i]) if i < len-1 { buffer.WriteString(".") } } return buffer.String() }