我有一个运行在本地主机上的服务器,它有一个OS分配的可用端口,现在我有一个客户端想要连接到服务器,但我不知道IP地址,也不知道这个本地网络是否有服务器。
现在我来到了一个解决方案,增加了另一个UDP客户端和服务器第一UDP客户端发送一个广播数据包到网络和UDP服务器将接收广播数据包现在UDP服务器知道地址和端口的TCP服务器和UDP客户端地址(从广播数据包)它将发送服务器地址到UDP客户端然后UDP客户端给它到TCP客户端建立连接。
但是现在的问题是首先如果我们需要发送一个广播UDP客户端和UDP服务器必须同意在同一个端口现在如何选择这个端口,选择的端口可能在一台机器上可用,但在另一台机器上不可用所以选择一个静态端口之间的客户端和服务器是不是做这个任务的最佳方式?
现在我的任务是识别服务器地址和端口,在UDP客户端和UDP服务器上都使用静态端口是一个好主意吗?如果不是(主要)如何实现这个任务?我使用C++与Qt框架有没有任何工具或类有这类问题,如果没有它是好的,但至少我想知道如何解决这个问题?
1条答案
按热度按时间jfgube3f1#
根据我的观察,你不必使用UDP广播来发现设备。因为你的应用程序使用的是QT框架,所以你可以利用KDE API(KDNSSD),它几乎可以为你完成所有的工作。KDNSSD是一个处理基于DNS的服务发现协议(DNS-SD)的库,DNS-SD是Zeroconf的一层,它可以启用网络服务,比如打印机,无需任何用户干预或集中式基础架构即可发现。请查看此处的文档:https://api.kde.org/frameworks/kdnssd/html/
回购链接:https://invent.kde.org/frameworks/kdnssd
希望它能帮助