我想找到所有已连接的IP地址(在LAN中)。
我使用了这个链接中解释的lookupHost()函数: lookupHost function description
但是我的应用程序为所有IP地址说“找到地址:”!
我不想使用QProccess。
很高兴听到你的想法。非常感谢。 雅阿里。
答案 0 :(得分:1)
没有可靠的方法来确定LAN中的所有主机。有很多方法可以猜测你的邻居,每个人都有自己的优点和缺点。但你永远不会确定你得到所有主机。例如,您可以尝试ping广播,但有人无法回复ping。因此Qt或其他人无法做到这一点。有一些方法依赖于终端中的命令。 您可以尝试使用nmap。虽然它需要安装nmap:
nmap -sP 192.168.1.*
这会在整个子网中进行简单的ping扫描,以查看所有主机都在线。
或者您也可以尝试以下步骤(不需要安装nmap):
在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