Files
4566704 792335a3cb feat(netx): 自 go-hua/common 迁入本机网络信息工具并独立成包
- 枚举 IPv4 地址与 MAC 地址(过滤回环与虚拟网卡),附测试、例程与 README
2026-09-20 12:20:50 +08:00

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
}