44 lines
1.0 KiB
Go
44 lines
1.0 KiB
Go
// 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
|
|
}
|