如何使用 C++ 创建 AVAHI 客户端和服务器?

Posted

技术标签:

【中文标题】如何使用 C++ 创建 AVAHI 客户端和服务器?【英文标题】:How could I create an AVAHI client & server using C++? 【发布时间】:2014-05-24 03:27:30 【问题描述】:

我正在编写一个 C++ 库,除其他外,它需要:

使用 AVAHI 在网络中搜索特定服务 使用 AVAHI 将自身发布为服务

我一直在寻找现有的选项。我发现 POCO C++ 的创建者提供了一个与 POCO C++ 集成的DNS-SD library。那会行,因为我实际上使用的是 POCO C++,但它是一个商业库,我买不起。

除此之外,avahi-daemon 提供了一个客户端接口,允许browsing 服务和publishing 新服务。这听起来也不错,但我需要我的代码是可移植的,并且可以在主要的 Linux 发行版、Mac OS X 和 Windows 中工作。 AFAIK,这个解决方案只适用于 Linux(avahi-daemon 可用)。

我想作为部分解决方案,我可以通过套接字发送格式正确的消息并处理原始响应。这样,我可以搜索使用 AVAHI 发布的服务。但我认为这是丑陋和不可维护的。

那么,在不购买软件的情况下,有没有足够好的解决方案呢?我知道this can be done using Python,但我需要用 C++ 来做。

在此先感谢

【问题讨论】:

您可以使用 libdns-sd-compat 标头,您可以在 C++ 中轻松地将其与 CMake 和支持 avahi 作为依赖项的 Hunter 包管理器集成,请参见示例:github.com/ruslo/hunter/blob/master/examples/Avahi/…github.com/ruslo/hunter 【参考方案1】:

http://avahi.org/ 上提供了一个开源库(在 LGPL 下发布)。它公开了一个 C 接口,可以很容易地在 c++ 程序中使用。

还有适用于所有主要发行版的预构建二进制版本。

【讨论】:

以上是关于如何使用 C++ 创建 AVAHI 客户端和服务器?的主要内容,如果未能解决你的问题,请参考以下文章

如何开发 Avahi 客户端/服务器

如何在 iOS swift 中获取 AVAHI 发布的服务的 IP 和 PORT?

创建要由 avahi 播放的节目

如何实现 avahi 感知的本地子域 dns 服务器?

[转帖]centos 7 avahi-daemon服务的作用及如何关闭

avahi-daemon 无法注册我正在使用 avahi-publish-service 发布的服务