Qt。如何使用 QtNetwork 查看网络上的其他计算机?

Posted

技术标签:

【中文标题】Qt。如何使用 QtNetwork 查看网络上的其他计算机?【英文标题】:Qt. How to view other computers on the network using QtNetwork? 【发布时间】:2014-02-04 04:35:56 【问题描述】:

我需要获取本地网络中所有 PC 的 IP 地址。如果我可以使用QtNetwork,我应该如何正确地做到这一点? 我厌倦了使用

QNetworkInterface::allAddresses();
QNetworkInterface::allInterfaces();

但这绝对不是我需要的。

附言

我需要获取 IP 才能连接到一些 Postgresql 服务器,是否有一些 Postgresql 驱动程序功能可以让事情变得更容易?

【问题讨论】:

【参考方案1】:

您需要的是“网络发现”。有很多不同的方法,每种方法都专用于特定的子域。较低级别的方法称为ARP, Address Resolution Protocol 参见一个不错的教程,例如这里http://tournasdimitrios1.wordpress.com/2011/01/26/discover-your-local-network-with-arp-scan-on-linux/。如果您需要服务发现,那么您可能应该选择 ZeroConf 和朋友 http://doc.qt.digia.com/qq/qq23-bonjour.html

【讨论】:

好吧,我想我只需要发现地址,因为如果我得到了一些,那么在那里连接到 Postgresql 服务器是没有问题的。谢谢,有很好的 Linux 示例,但关于 Windows 和 Mac 的帽子? 嗯,TCP/IP 网络堆栈基本上是一项 BSD(伯克利软件分发)发明,其基本方法、技术和工具在所有系统中都是相同的。此外,MacOS X 是一个底层的 unix,高级用户可以获得与 Linux 中几乎相同的操作环境(当然存在差异,但我相信在这种情况下它们并不那么重要)。提到的arp-scan 程序适用于Linux 和MacOSX。对于 Windows,您可以使用开源替代品,例如 sourceforge.net/projects/arpscannet

以上是关于Qt。如何使用 QtNetwork 查看网络上的其他计算机?的主要内容,如果未能解决你的问题,请参考以下文章

如何告诉 Qt Network 更改传出网络接口? [复制]

C++ 非 QT 接口和 QtNetwork

如何使用 Qt Network 类防止关闭竞争条件

Qt获取本机网络信息

Qt

Qt网络编程之一