golang获取局域网内所有ip

admin 2026-03-10 19:32:45 编程 来源:ZONE.CI 全球网 0 阅读模式
使用golang编写程序可以轻松地获取局域网内的所有IP地址。在本文中,我们将介绍如何使用golang来实现这一功能。

1. 获取当前设备的IP地址

在开始获取局域网内的所有IP之前,我们首先需要获得当前设备的IP地址。使用golang的net包,我们可以轻松地实现这一功能。

下面是一个简单的示例代码:

package main

import (
	"fmt"
	"net"
)

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

	for _, iface := range interfaces {
		addrs, err := iface.Addrs()
		if err != nil {
			fmt.Println(err)
			continue
		}
		for _, addr := range addrs {
			ip, _, err := net.ParseCIDR(addr.String())
			if err != nil {
				fmt.Println(err)
				continue
			}
			fmt.Println(ip)
		}
	}
}

运行上述代码,我们将会获得当前设备的所有IP地址。

2. 扫描局域网内的所有IP地址

一旦我们获得了当前设备的IP地址,我们就可以开始扫描局域网内的所有IP地址。为此,我们可以使用golang的net包中的函数Ping,该函数允许我们向指定的IP地址发送一个ICMP Echo请求,并等待响应。

下面是一个简单的示例代码:

package main

import (
	"fmt"
	"net"
	"os"
)

func main() {
	ip := net.IP{192, 168, 1, 1}
	for i := 1; i <= 255;="" i++="" {="" ip[3]="byte(i)" strip="" :="ip.String()" fmt.print("pinging="" ",="" strip,="" "="" ...="" ")="" _,="" err="" :="net.Dial("ip4:icmp"," strip)="" if="" err="" !="nil" {="" fmt.println("not="" responding")="" continue="" }="" fmt.println("responding")="" }="" }="">

在这个示例中,我们从1到255遍历了局域网地址最后一个字节,并使用Dial函数向每个地址发送一个ICMP Echo请求。如果目标IP地址响应,则认为其处于活动状态。

3. 获取整个局域网内的IP地址

现在,我们可以结合以上两个步骤,获取整个局域网内的IP地址。

下面是一个完整的示例代码:

package main

import (
	"fmt"
	"net"
	"os"
)

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

	for _, iface := range interfaces {
		addrs, err := iface.Addrs()
		if err != nil {
			fmt.Println(err)
			continue
		}
		for _, addr := range addrs {
			ip, ok := addr.(*net.IPNet)
			if !ok {
				continue
			}
			if ip.IP.To4() == nil || ip.IP.IsLoopback() {
				continue
			}

			fmt.Println(ip.IP)
		}
	}
}

在这个示例中,我们首先获取了当前设备的所有接口,然后遍历每个接口的地址。如果该地址是IPv4地址且不是环回地址,我们就将其打印出来。

通过使用golang的net包,我们可以轻松地获取局域网内的所有IP地址。无论是获取当前设备的IP还是扫描整个局域网,都可以方便地实现。希望本文对您理解如何使用golang获取局域网内的IP地址有所帮助!
golang获取局域网内所有ip 编程

golang获取局域网内所有ip

使用golang编写程序可以轻松地获取局域网内的所有IP地址。在本文中,我们将介绍如何使用golang来实现这一功能。1. 获取当前设备的IP地址 在开始获取局
golang圣经中文版 编程

golang圣经中文版

Go语言是谷歌开发的一种静态强类型编程语言,它可以用来构建高性能的、可靠的软件。作为一个专业的Golang开发者,熟悉Golang圣经中的核心知识是非常重要的。
golangrune显示字符 编程

golangrune显示字符

世界上的每一个人都离不开字符,无论是文字、数字还是符号,都以字符的形式表现。在计算机编程领域中,字符的意义更加重要,因为字符是构成代码和界面的基本单位。而在Go
golang模型教学视频 编程

golang模型教学视频

Go语言(也叫Golang)是一种相对简单且高效的编程语言,专门设计用于处理大规模的系统。作为一个专业的Golang开发者,我十分热衷于这个语言,并且经常针对不
评论:0   参与:  0