go基础库之解析本地 IP 地址

golang 基础库之解析本地 IP 地址,介绍了如何从可用的本地端口获取对应的IP地址

go基础库之解析本地 IP 地址

Golang 版本

1.14.2

前言

golang 基础库之解析本地 IP 地址,介绍了如何从可用的本地端口获取对应的IP地址

实现


package main

import (
	"fmt"
	"net"
)

func main() {

	// 获取所有网络接口
	interfaces, err := net.Interfaces()
	if err != nil {
		panic(err)
	}

	for _, interf := range interfaces {
		// 解析地址
		// 遍历接口
		addrs, err := interf.Addrs()
		if err != nil {
			panic(err)
		}
		fmt.Println(interf.Name)
		for _, add := range addrs {
			if ip, ok := add.(*net.IPNet); ok {
				fmt.Printf("\t%v\n", ip)
			}
		}

	}
}


$ go run main.go

本地连接* 4
        fe80::4d29:b94e:922f:e339/64
        192.168.1.57/16
WLAN
        10.154.11.12/24

原理

net 包包含 Interfaces 函数,该函数将网络接口列为 Interface 结构的一个切片。而 Interface 结构具有 Addrs 方法,该方法列出可用的网络地址。 通过这种方式,就可以按照接口列出对应的地址。

另一个选择是使用 net 包的 interfaceaddr 函数,它提供了实现 Addr 接口的结构切片。 这为你提供了获取所需信息的方法。