存在于局域网中的所有IP地址(即设备)的列表

时间:2014-06-16 10:14:05

标签: c++ c node.js networking dhcp

我想获得局域网中存在的所有IP地址(即设备)的列表。我不想使用nmap,其他网络工具。而且我也不想在子网范围内ping每个IP地址并查找实时IP地址?有没有办法使用C,C ++?

3 个答案:

答案 0 :(得分:2)

没有

当然,为了解决这个问题,你将不得不使用一些“网络工具”,你怎么看待你知道其他机器的机器呢?

一种方法可能是查询DHCP服务器,但不会泄露具有静态IP的设备,依此类推。

任何可靠的方法都会涉及以某种方式与相关设备进行通信。

答案 1 :(得分:0)

没有可靠的方法来确定LAN中的所有主机。有很多方法可以猜测你的邻居,每个人都有自己的优点和缺点。但你永远不会确定你得到所有主机。例如,您可以尝试ping广播,但有人无法回复ping。所以没有可靠的方法来做到这一点。有一些方法依赖于终端中的命令。 您可以尝试使用nmap。虽然它需要安装nmap:

nmap -sP 192.168.1.*

这会在整个子网中执行简单的ping扫描,以查看所有主机都在线。

或者您也可以尝试以下步骤(不需要安装nmap):

  • 在命令提示符下键入“ipconfig”。这将给你的IP地址 你自己的机器。例如,您的计算机IP地址为192.168.1.6 所以你的广播IP地址是192.168.1.255。
  • Ping您的广播IP地址“ping 192.168.1.255”(可能需要-b 在linux上)
  • 现在输入“arp -a”您将获得您所有IP地址的列表 段。

您可以使用某个工具包在应用程序中使用适当的参数启动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。挑战是确定放置这个嗅探器的中心位置。