// Package netx 本机网络信息:枚举 IPv4 地址与 MAC 地址(跳过回环与无硬件地址的虚拟网卡)。 package netx import ( "net" ) const NetBufferSize = 0x1000 // GetLocalIp 获取本机所有 IPv4 地址(不含回环) func GetLocalIp() ([]string, error) { addrList, err := net.InterfaceAddrs() if err != nil { return nil, err } ipList := make([]string, 0) for _, address := range addrList { // 检查ip地址判断是否回环地址 if ipNet, ok := address.(*net.IPNet); ok && !ipNet.IP.IsLoopback() { if ipNet.IP.To4() != nil { ipList = append(ipList, ipNet.IP.String()) } } } return ipList, err } // GetLocalMac 获取本机的MAC地址(跳过无硬件地址的虚拟网卡) func GetLocalMac() ([]string, error) { macList := make([]string, 0) interfaces, err := net.Interfaces() if err != nil { return nil, err } for _, inter := range interfaces { mac := inter.HardwareAddr.String() if mac == "" { continue } macList = append(macList, mac) } return macList, nil }