是否连接了IP地址

时间:2014-03-29 12:46:23

标签: qt ip

我想找到所有已连接的IP地址(在LAN中)。

我使用了这个链接中解释的lookupHost()函数: lookupHost function description

但是我的应用程序为所有IP地址说“找到地址:”!

我不想使用QProccess。

很高兴听到你的想法。

非常感谢。 雅阿里。

2 个答案:

答案 0 :(得分:1)

没有可靠的方法来确定LAN中的所有主机。有很多方法可以猜测你的邻居,每个人都有自己的优点和缺点。但你永远不会确定你得到所有主机。例如,您可以尝试ping广播,但有人无法回复ping。因此Qt或其他人无法做到这一点。有一些方法依赖于终端中的命令。 您可以尝试使用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地址的列表 段。

在Qt中,您可以使用QProcess来完成它们:

QProcess myProcess;
QString program = "nmap";
QStringList arguments;
arguments << "-sP" << "192.168.1.*";
myProcess.start(program, arguments);
myProcess.waitForFinished();
QByteArray result = myProcess.readAllStandardOutput ();
const QString all(result);

答案 1 :(得分:0)

我创建了一个dll来查找局域网中的所有在线IP地址及其MAC地址。与您分享:

我写了一篇关于这个主题的文章并发布在CodeProject中:

http://www.codeproject.com/Articles/798730/Finding-All-Online-IP-Addresses-Simple-Method