Golang 获取本地 IP 地址指南

想要用 Golang 获取本地 IP 地址?很简单!使用 net 包中的 Addrs()InterfaceAddrs() 函数即可实现。

以下是一段示例代码,演示了如何获取本地 IP 地址:

package main

import (
	'fmt'
	'net'
)

func main() {
	// 获取所有网络接口
	interfaces, err := net.Interfaces()
	if err != nil {
		fmt.Println('获取网络接口失败:', err)
		return
	}

	// 遍历每个网络接口,获取 IP 地址
	for _, iface := range interfaces {
		// 排除回环接口和无效接口
		if iface.Flags&net.FlagLoopback == 0 && iface.Flags&net.FlagUp != 0 {
			// 获取接口的地址列表
			addrs, err := iface.Addrs()
			if err != nil {
				fmt.Println('获取接口地址失败:', err)
				continue
			}

			// 遍历每个地址,找到 IP 地址
			for _, addr := range addrs {
				// 检查地址类型是否为 IP 地址
				if ipnet, ok := addr.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
					// IPv4 地址
					if ipnet.IP.To4() != nil {
						fmt.Println('IPv4地址:', ipnet.IP.String())
					}

					// IPv6 地址
					if ipnet.IP.To16() != nil {
						fmt.Println('IPv6地址:', ipnet.IP.String())
					}
				}
			}
		}
	}
}

运行以上代码,你将获得本机的 IPv4 和 IPv6 地址。

Golang 获取本地 IP 地址指南

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

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