Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 有没有快速获取子网中所有ip地址的技术?_C++_Dns - Fatal编程技术网

C++ 有没有快速获取子网中所有ip地址的技术?

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)? 有没有办法像这样快速完成这项

在中,我尝试获取子网中的所有有效ip地址,因此我使用for循环,但在尝试之后,我发现我的代码在子网中查找所有ip地址需要2分钟以上,在某些情况下需要5分钟以上

我的代码是在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。