C++ 有没有快速获取子网中所有ip地址的技术?
在中,我尝试获取子网中的所有有效ip地址,因此我使用for循环,但在尝试之后,我发现我的代码在子网中查找所有ip地址需要2分钟以上,在某些情况下需要5分钟以上C++ 有没有快速获取子网中所有ip地址的技术?,c++,dns,C++,Dns,在中,我尝试获取子网中的所有有效ip地址,因此我使用for循环,但在尝试之后,我发现我的代码在子网中查找所有ip地址需要2分钟以上,在某些情况下需要5分钟以上 我的代码是在Mac OS下用C++编写的;p> 但在windows中,要做同样的事情,您只需编写net view/all命令,它会立即打印子网中的所有ip地址 在MAC操作系统中,您可以使用“你好”服务来完成这项工作 这些技术是如何以这种速度工作的(Net-view/all和Bonjour-service)? 有没有办法像这样快速完成这项
我的代码是在Mac OS下用C++编写的;p> 但在windows中,要做同样的事情,您只需编写
net view/all
命令,它会立即打印子网中的所有ip地址
在MAC操作系统中,您可以使用“你好”服务来完成这项工作
这些技术是如何以这种速度工作的(Net-view/all
和Bonjour-service
)?
有没有办法像这样快速完成这项工作?
如果没有,请告诉我是否有APi可以在mac os中直接使用Bonjour服务到我的代码(C++)中
编辑:
我发现了一个新主意
我在苹果上发现了一些叫做Bojou-API的API,我的帮助,但是我如何使用C++,因为我知道MAC使用OPBJECTV-V-C。
您应该异步工作。您需要一个发出通信请求但立即返回的函数。您必须为每个调用创建一个完成事件数组。每个事件句柄都传递给一个IcmpSendEcho2调用
然后调用WaitForMultipleObjects等待所有事件集。您应该异步工作。您需要一个发出通信请求但立即返回的函数。您必须为每个调用创建一个完成事件数组。每个事件句柄都传递给一个IcmpSendEcho2调用
然后调用WaitForMultipleObjects,等待设置所有事件。
net view/ALL
在Windows网络级别工作,而不是在IP级别。它将只列出启用了Windows网络和名称解析的计算机。如果您的计算机没有运行Windows(或samba),它们将不会被列出。打印机、路由器等也是如此
对于IPv4,最好的方法是通过检查计算机的IP地址和网络掩码来提取当前子网中的IP地址列表。然后强制对每个IP地址进行ARP查找。如果设备在网络上,即使它完全锁定(没有打开的端口,没有应答ping),ARP查找也将始终有效
有了IPv6,你基本上就不走运了。单个子网(18446 744 073 709 551 616)中的可用IP地址数量太少,无法进行彻底搜索。
net view/all
在Windows网络级别上工作,而不是在IP级别上。它将只列出启用了Windows网络和名称解析的计算机。如果您的计算机没有运行Windows(或samba),它们将不会被列出。打印机、路由器等也是如此
对于IPv4,最好的方法是通过检查计算机的IP地址和网络掩码来提取当前子网中的IP地址列表。然后强制对每个IP地址进行ARP查找。如果设备在网络上,即使它完全锁定(没有打开的端口,没有应答ping),ARP查找也将始终有效
有了IPv6,你基本上就不走运了。单个子网(18 446 744 073 709 551 616)中可用IP地址的数量太少,无法进行彻底搜索。什么是
net view/all
?这会导致Windows 7中出现语法错误。这是一个在Windows命令中运行的命令。什么是net view/all
?这会导致Windows 7中出现语法错误。这是在Windows commandBonjour中运行的命令Bonjour是与Windows networking/Samba等效的Mac。它将只检测Bonjour激活的设备(通常是Mac电脑)。它不会获得所有有效(正在使用)的IP。Bonjour是Windows networking/Samba的Mac等价物。它将只检测Bonjour激活的设备(通常是Mac电脑)。它不会获得所有有效(正在使用)的IP。