要获取所有实际物理网卡,可以使用net包中的Interfaces()函数。以下是一个示例代码:

package main

import (
	"fmt"
	"net"
)

func main() {
	interfaces, err := net.Interfaces()
	if err != nil {
		fmt.Println("Failed to get network interfaces:", err)
		return
	}

	for _, iface := range interfaces {
		if iface.Flags&net.FlagUp != 0 && iface.Flags&net.FlagLoopback == 0 {
			addrs, err := iface.Addrs()
			if err != nil {
				fmt.Println("Failed to get addresses for interface", iface.Name, ":", err)
				continue
			}

			for _, addr := range addrs {
				ipNet, ok := addr.(*net.IPNet)
				if ok && !ipNet.IP.IsLoopback() && ipNet.IP.To4() != nil {
					fmt.Println("Interface:", iface.Name)
					fmt.Println("IP Address:", ipNet.IP)
				}
			}
		}
	}
}

这段代码会遍历所有网络接口,过滤掉回环接口和未启用的接口,并输出每个接口的名称和IP地址。

golang获取所有实际物理网卡

原文地址: https://www.cveoy.top/t/topic/hZaO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录