如何使用Go语言获取本机IPv4地址 | 青训营
在青训营的大作业中,为了使自己的程序即使在不同的局域网和不同的设备上仍然能运行,因此实现一个获取此时运行环境下的IP地址是非常有必要的。这样我们就可以通过IP地址访问本机的视频和图片等数据。在这篇笔记中,我们将使用Go语言来执行系统命令、解析命令输出,并提取其中的IPv4地址。下面是代码和解释:
代码解析
这段代码通过Go的os/exec包来执行系统命令,并解析命令输出以获取IPv4地址。
-
导入所需的包:
import ( "fmt" "os/exec" "strings" ) -
主函数:
func main() { // 执行ipconfig命令获取网络配置信息 cmd := exec.Command("ipconfig") output, err := cmd.Output() if err != nil { fmt.Println("无法执行ipconfig命令:", err) return } // 解析输出结果,查找IPv4地址 ipv4Address := parseIPv4(string(output)) if ipv4Address == "" { fmt.Println("未找到IPv4地址") } else { fmt.Println("当前WiFi的IPv4地址:", ipv4Address) } }在
main函数中,首先使用exec.Command创建一个命令对象,用于执行系统命令(这里是ipconfig)。然后,使用cmd.Output()方法执行命令并获取其输出。如果执行命令出现错误,会输出错误信息。 -
解析IPv4地址的函数:
func parseIPv4(output string) string { // 遍历输出结果,查找IPv4地址 for _, line := range strings.Split(output, "\n") { fields := strings.Fields(line) if len(fields) >= 2 && fields[0] == "IPv4" { return fmt.Sprintf(fields[len(fields)-1]) } } return "" }parseIPv4函数遍历命令输出的每一行,通过strings.Split将输出按行分割。然后,对每一行使用strings.Fields以空白字符为分隔符将其分割为字段,以便进一步处理。如果该行的字段数大于等于2且第一个字段为"IPv4",则说明找到了IPv4地址的相关行。函数会返回该行中的最后一个字段,即IPv4地址。
全部代码
func main() {
// 执行ipconfig命令获取网络配置信息
cmd := exec.Command("ipconfig")
output, err := cmd.Output()
if err != nil {
fmt.Println("无法执行ipconfig命令:", err)
return
}
// 解析输出结果,查找IPv4地址
ipv4Address := parseIPv4(string(output))
if ipv4Address == "" {
fmt.Println("未找到IPv4地址")
} else {
fmt.Println("当前WiFi的IPv4地址:", ipv4Address)
}
}
func parseIPv4(output string) string {
// 遍历输出结果,查找IPv4地址
//_是遍历的数组索引
for _, line := range strings.Split(output, "\n") {
fields := strings.Fields(line)
if len(fields) >= 2 && fields[0] == "IPv4" {
return fmt.Sprintf(fields[len(fields)-1])
}
}
return ""
}
通过这段代码,我们可以执行系统命令获取网络配置信息,并从中提取出IPv4地址。这对于一些需要获取网络信息的任务非常有用,例如系统管理、网络诊断等。
运行结果
本机IP
在搜索栏输入cmd,进入命令行,输入ipconfig
赠送知识
ipconfig是一个在Windows操作系统下使用的命令行工具,用于查看和管理网络配置信息。它提供了有关计算机网络接口、IP地址、子网掩码、默认网关、DNS服务器等网络参数的详细信息。ipconfig可以帮助用户诊断网络问题,查看当前连接的网络状态以及获取网络配置信息。
通过在命令提示符(Command Prompt)或PowerShell中运行ipconfig命令,您可以查看与计算机网络连接相关的各种信息,如IPv4和IPv6地址、物理网卡、虚拟网卡(如VPN连接)、DNS配置等。常见的ipconfig命令包括:
ipconfig:显示当前所有网络连接的详细信息,包括IP地址、子网掩码、默认网关等。ipconfig /all:显示所有网络连接的详细信息,包括物理网卡、虚拟网卡、DHCP服务器等。ipconfig /release:释放当前网络连接的IP地址。ipconfig /renew:重新获取当前网络连接的IP地址。ipconfig /flushdns:清除DNS缓存,刷新DNS解析信息。
需要注意的是,ipconfig命令是特定于Windows操作系统的工具,类Unix-like系统(如Linux和macOS)通常使用ifconfig或ip命令来获取类似的网络配置信息。