我想获得局域网中存在的所有IP地址(即设备)的列表。我不想使用nmap,其他网络工具。而且我也不想在子网范围内ping每个IP地址并查找实时IP地址?有没有办法使用C,C ++?
答案 0 :(得分:2)
没有
当然,为了解决这个问题,你将不得不使用一些“网络工具”,你怎么看待你知道其他机器的机器呢?
一种方法可能是查询DHCP服务器,但不会泄露具有静态IP的设备,依此类推。
任何可靠的方法都会涉及以某种方式与相关设备进行通信。
答案 1 :(得分:0)
没有可靠的方法来确定LAN中的所有主机。有很多方法可以猜测你的邻居,每个人都有自己的优点和缺点。但你永远不会确定你得到所有主机。例如,您可以尝试ping广播,但有人无法回复ping。所以没有可靠的方法来做到这一点。有一些方法依赖于终端中的命令。 您可以尝试使用nmap。虽然它需要安装nmap:
nmap -sP 192.168.1.*
这会在整个子网中执行简单的ping扫描,以查看所有主机都在线。
或者您也可以尝试以下步骤(不需要安装nmap):
您可以使用某个工具包在应用程序中使用适当的参数启动arp或nmap。
在Qt中,您可以使用QProcess来完成它们:
QProcess myProcess;
QString program = "arp";
QStringList arguments;
arguments << "-a";
myProcess.start(program, arguments);
myProcess.waitForFinished();
QByteArray result = myProcess.readAllStandardOutput ();
const QString all(result);
答案 2 :(得分:-1)
您可以使用libpcap在中央位置以混杂模式嗅探网络数据包并提取源IP。挑战是确定放置这个嗅探器的中心位置。