问题标签 [avahi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3656 浏览

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

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

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

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

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

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

那么,在不购买软件的情况下,有没有足够好的解决方案呢?我知道这可以使用 Python 来完成,但我需要用 C++ 来完成。

提前谢谢了

0 投票
1 回答
664 浏览

c++ - 无法构建 avahi4j:avahi4j_Client.c:18:32:致命错误:avahi-common/error.h:没有这样的文件或目录

根据帖子的标题,我正在尝试构建 avahi4j,但下载后很快就撞墙了:https://code.google.com/p/avahi4j/downloads/detail?name=avahi4j-0.1.tar。 gz&can=2&q=

解压后,然后ant clean all从 avahi4j-0.1 目录中执行,我收到以下错误:

有谁知道可能是什么问题?

编辑:为了完整起见,我运行以下命令,这会产生错误:

此外,跑步find . -name error.h不会产生任何结果。

0 投票
1 回答
268 浏览

java - 构建用于 Oracle jvm 的 avahi(错误:未找到 jni.h)

这是对以下问题的跟进:在定义宏以将案例类实例转换为映射并返回时编译错误

那里的答案解决了我最初的问题——我没有安装依赖项。但是,现在我有一个问题,因为ant clean all仍然无法找到jni.h. 这可能是因为说明说要安装 open jdk 6。Oracle jdk 7 是否有解决方法。这是我得到的错误:

0 投票
1 回答
144 浏览

java - 为什么 Avahi “ant test-browse” 失败并显示 “libavahi4j.so: undefined symbol: avahi_malloc”?

我能够按照说明成功构建 avahi ,但是快速开始运行“ant test-browse”的下一步会导致符号查找错误,我对如何继续解决此问题感到困惑。我确实发现以下帖子显示了类似的问题,但无法取得任何进展(似乎该线程从未公开解决过)。这是我看到的错误输出:

0 投票
0 回答
188 浏览

java - 使用 avahi4j zeroconf 发现运行相同服务的多台机器

我正在尝试使用 avahi4j zeroconf 来查找提供相同服务的多个主机。在我的机器上运行一个非常简单的测试时,我看不到任何新服务 ( IServiceBrowserCallback) 或服务解析 ( IServiceResolverCallback) 的回调。例如,我有以下代码(基本上只是从一些示例代码在线复制,加上从 javadoc 中读取 api):

无论我的机器上有多少并发运行的应用程序,服务发现的回调只被调用一次:

有谁知道为什么这些服务没有发现彼此?难道我做错了什么?如果有任何帮助,如果我给它们提供不同的名称,我可以看到多个服务(在这种情况下,我可以看到多个浏览事件——但是,如果我想获得更多详细信息,我似乎必须为每个名称创建一个新的解析器关于触发浏览器回调的每个服务)。

0 投票
2 回答
2531 浏览

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

有时,我注意到我无法检测到我在 Ubuntu 上通过 avahi (bonjour) 发布的服务。例如,avahi-browse -a 不显示已发布的服务,浏览器也不解析已发布的 .local 主机名。在服务器端,我注意到在注册服务时ps提示的输出:avahi-daemon

以下是此命令在“未卡住”主机上的输出:

我确实看到了这个旧的错误报告,这可能是相关的。有时杀戮avahi-daemon似乎可以暂时解决问题。此外,重新启动卡住的机器的一次尝试也奏效了。但是,我想了解为什么会发生这种情况以及如何以最可靠的方式处理该问题。有任何想法吗?

0 投票
1 回答
2386 浏览

linux - 多个 IP 地址上的 Avahi DNS-SD

背景:

我正在尝试在不需要 DHCP 服务器的情况下与 IP 摄像机通信。这是摄像机获取 IP 地址的方式:

  1. 基本 DHCP 程序(发现等)
  2. 如果上述方法失败,则相机的后备地址为192.168.0.90
  3. 然后,相机启动 avahi-daemon 并成功获取链接本地地址以实现稳健性
  4. IP 别名现已完成,接口有两个 IP。

问题:

现在的问题是,当我通过 avahi-browse浏览网络上的服务时,相机会回复两个 IP 地址(使用 Wireshark 检查)。

avahi 只显示一个,它可能是 zeroconf:ed 地址或备用地址。

我只想要链接本地地址,而不是后备。有什么靠谱的获取方式吗?

0 投票
1 回答
472 浏览

macos - 设置PPTP透明访问家庭网络

设置PPTP透明访问家庭网络

我将Raspberry Pi盒子连接到家庭 WiFi 路由器并运行pptpd. 本地地址是192.168.1.32(eth0) 和192.168.2.1(ppp0) 和本地名称raspberry.local

我将iMac192.168.1.27连接到具有本地 IP和本地名称的同一路由器 imac.local

我在 Internet 上的某个地方有Macbook192.168.2.10 ,它通过 ppp0连接到 Raspberry 的 PPTP

这张图显示得更清楚。

pptpd配置

Raspberry 上的 PPTP 是通过这个简单的脚本安装的。

/etc/pptpd.conf

/etc/ppp/options.pptpd

/etc/rc.local

当前的连接性

笔记本电脑
  • 可以连接家庭PPTP,通过家庭路由器连接互联网
  • 可以通过本地 IP 连接到 iMac 和192.168.1.27Raspberry192.168.1.32
  • 无法解决和_ _raspberry.localimac.local
覆盆子
  • 可以通过本地 IP 连接到 iMac 和 Macbook,192.168.1.27 并且192.168.2.10
  • 可以解决imac.local
  • 无法解决_ _macbook.local
iMac
  • 可以通过本地 IP 连接到树莓派192.168.1.32
  • 可以解决raspberry.local
  • 无法通过本地 IP 连接到 Macbook 192.168.2.10更新通过向路由器添加静态路由解决)
  • 无法解决_ _macbook.local

目标

目标是连接和解析从任意到任意的本地名称。但我不知道如何配置:iptables、avahi、netatalk 或其他地方?

0 投票
1 回答
918 浏览

linux - 嵌入式 linux 系统上的 zeroconf 实现

我有一个嵌入式系统,我喜欢在其中添加 zeroconf。目标是:

  1. 如果没有可用的 dhcp,则自动为自己分配 IP。
  2. 它响应 mdns 请求并正确识别自己。
  3. 它响应 dns-ds 并正确广播其功能。

有没有图书馆可以帮助我解决这个问题?

我找到了 Avahi ( http://avahi.org/ ),但它似乎有几年没有发展了。它仍然是一个很好的解决方案吗?

我的设备上有 Linux 2.x。

0 投票
1 回答
780 浏览

zeroconf - 通过 bonjur / avahi 发现广域服务

我正在研究广域服务发现和 bonjur / avahi 似乎真的很好。但是,我对这一切如何运作感到有些困惑?

所以:

我有一堆在云中运行的服务。

我的客户可以位于世界任何地方。

我希望客户端自动发现云中的服务。

我需要客户端绝对零配置,所以他们不知道 IP、端口,什么都没有。

如果我理解正确,这可以使用上面提到的 dns-sd 库来完成。我可以完全访问 DNS 服务器,所以我想,这些服务可以在启动时使用这些库进行注册,然后数据可以通过全球的 DNS 服务器传播。

客户可以通过使用 bonjur / avahi 技术查询我的域的 DNS 记录来获取广告信息,对吗?

我需要做的就是将客户端与 bonjur / avahi 库链接,并告诉它应该使用哪个域(查询)。它是否正确?

我在这里遗漏了什么还是它是如何工作的?

提前致谢!