问题标签 [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 回答
1355 浏览

java - avahi 无法找到由 JmDNS 创建的服务

我正在从其他运行 windows-xp 的机器创建 JmDNS 服务

如果我运行其他将解析服务的客户端,则由JmDNS它创建,无论机器如何。但如果我尝试通过avahi-browse. 它找不到它。并给出以下输出。

0 投票
2 回答
1643 浏览

android - 将 avahi 编译到 Android NDK 项目中的问题

在过去的几天里,我一直在尝试将 avahi 构建到静态或共享库中以与现有的 Android NDK 项目一起使用。

我们在 App and Play 商店中有一些游戏,我的任务是让多人游戏在 Android 版本中运行。具体来说,该任务涉及替换 Bonjour 组件,以便这些游戏可以通过 zeroconf 相互连接。

研究似乎表明 avahi 是我们正在寻找的库,但在这一点上,我对任何可行的方法都持开放态度!

我希望这里的某个人可以帮助我进行 avahi 编译或建议另一个更合适(且更易于安装)的库。

项目使用 android-ndk-r8b 并使用命令行(不是 eclipse)在 OSX 10.7.4 上构建

从这里获得最新的 Avahi 源: http ://www.linuxfromscratch.org/blfs/view/svn/basicnet/avahi.html

自制了所有必要的库,以使 ./configure 无错误地运行。

./configure 运行时没有明显的危险信号。

make 导致此编译错误:

认为它不是针对 android-ndk-r8b 库或查找 ipv6.h 或其他东西构建的。

检查了我的 .bash_profile.sh 文件:

将 --host=arm-linux-androideabi 添加到 ./configure 参数列表中,导致此错误:

无法弄清楚如何获取可用主机系统类型的列表,因此改变了方向,并决定尝试通过 Android.mk 文件构建静态库。

发现这篇关于创建适当的 Android.mk 文件的帖子: can't compile avahi on android

意识到我在所有子目录中都没有 Android.mk 文件。

研究、下载、构建了 Androgenizer 以尝试将所有 Makefile.am 文件转换为 Android.mk 文件。 http://cgit.collabora.com/git/user/derek/androgenizer.git/

无法弄清楚或找到有关如何做到这一点的信息=/

决定尝试创建我自己的 Android.mk 文件:

导致 avahi-core/iface-linux.c:33:0 的编译时错误:

现在我几乎被困住了。

我尝试#if 0'ing iface-linux.c 和 h 文件导致一系列其他错误,所以可能是个坏主意。

认为这可能是我使用 ./configure 命令做错了什么?也许我的 Android.mk 文件有问题?

我认为这一定是很多开发人员正在处理的事情,所以我可能遗漏了一些东西,因为我似乎无法通过谷歌找到任何好的信息。

任何帮助将非常感激!我也已将其发送到 avhi 邮件列表,如果我在那里得到回复,我将在此处发布以供后代使用。

谢谢,克里斯

0 投票
1 回答
1385 浏览

bonjour - 多线程 avahi 解析导致段错误

我正在尝试将启用 zeronconf 的 C/C++ 应用程序移植到 Linux,但是我得到了与 D-BUS 相关的段错误。我不确定这是 Avahi 中的错误、我对 Avahi 的误用,还是我的代码中的错误。

我正在使用一个封装了 AvahiClient、AvahiSimplePoll 和 AvahiServiceResolver 的 ZeroconfResolver 对象。ZeroconfResolver 有一个 Resolve 函数,它首先实例化 AvahiSimplePoll,然后是 AvahiClient,最后是 AvahiServiceResolver。在每次实例化之前,我都会检查错误,然后再继续下一个。在成功创建 AvahiServiceResolver 后,它会使用 AvahiSimplePoll 调用 avahi_simple_poll_loop。

整个过程在同步完成时效果很好,但在同时异步使用多个 ZeroconfResolver 时会因段错误而失败(即,我有多个线程创建自己的 ZeroconfResolver 对象)。可以在下面的代码中看到重现段错误的对象的简单改编(可能不会立即产生段错误,但在我的用例中它经常发生)。

我了解“开箱即用”Avahi 不是线程安全的,但根据我对 [1] 的解释,只要不从超过一根线。每个 ZeroconfResolver 都有自己的一组 Avahi 对象,它们不会跨线程边界相互交互。

段错误发生在 Avahi 库中看似随机的函数中。通常,它们发生在引用 dbus 的 avahi_client_new 或 avahi_service_resolver_new 函数中。Avahi wiki 是否意味着暗示 AvahiClient/AvahiPoll 对象的“创建”也不是线程安全的?

[1] http://avahi.org/wiki/RunningAvahiClientAsThread

0 投票
2 回答
3035 浏览

avahi - 需要 mDNS 响应以使用子类型进行服务发现

我正在尝试基于子类型进行服务发现。

例如,我正在运行 avahi-publish -s --domain=local --subtype="_ann._sub._http._tcp" "serviceName" "_http._tcp" 5353 "text Record"。

现在我正在查询子类型 ex:AT+MDNSSD=_ann,_sub,_http,_tcp,local。

但是来自 avahi-publish 的响应不包含子类型。我收到名称为“serviceNaem._http._tcp.local”的响应消息。

任何人都可以告诉我如何使用 avahi-publish 注册服务,以便我可以在资源记录中获得“serviceName._ann._sub._http._tcp.local”的响应。

0 投票
2 回答
545 浏览

android - 在android上编译avahi时如何获取Android.mk,

我被分配了使用 android 补丁http://avahi.org/ticket/354将 avahi 核心编译为 android 的任务。使用补丁后,任何 Avahi 子目录(如 \avahi-core 等)中都没有 Android.mk 文件。我怎样才能得到它们。谢谢

0 投票
1 回答
1553 浏览

python - 使用 python 浏览 avahi 服务会错过服务

我需要一个类,它为我提供当前可用的某种类型的 avahi 服务列表。因此,我gobject.MainLoop()在一个单独的线程中运行一个(第 23-25 行),并为我感兴趣的每个服务添加一个浏览器(第 27,28 行)。这原则上有效。

我的问题是,我并不总是得到所有服务。有时列出所有可用的服务,有时没有列出,有时只列出几个。我的猜测是,浏览器在连接适当的信号(第 41-44 行)之前开始迭代服务(第 36 行),但我不知道如何解决这个问题。下面是一个显示失败的最小示例。

我在网上看到的大多数示例(例如:停止 Avahi 服务并返回元素列表)在设置浏览器并连接信号后运行 MainLoop。当收到“AllForNow”信号时,循环退出。这对我来说不是一个选项,因为浏览器应该继续运行并监听新的或删除的服务(顺便说一下,这很可靠,只是初始查询有问题)。

0 投票
3 回答
11523 浏览

iphone - 如何在网络上检测 iPhone?

我正在尝试检测我的 iPhone 是否与我的 Raspberry Pi 在同一个网络中。当我在家并且我的 iPhone 的存在已在我的 LAN 中注册时,我想执行一个脚本。

似乎当手机处于待机状态时,甚至找不到 iphone-sync 端口(6207/tcp)。“/usr/bin/nmap -n -sT -p62078 [我手机的本地 IP]” 显示没有主机。我想知道我还能扫描什么。显然,手机已在线并准备好接受 facetime 通话(通过 3G 传输的数据已停用)。我可以用我在树莓派上使用的 avahi 完成一些事情吗,或者有其他方法吗?

0 投票
1 回答
826 浏览

bonjour - 在不知道 IP 的情况下连接到本地网络上的网站

我正在创建一个嵌入式设备(基于 RPi),它将连接到本地网络。我希望此设备能够通过网页配置设备(与许多路由器非常相似)。

我希望用户在 Web 浏览器中键入 [http://my-device-config](或其他一些固定地址)并被发送到配置页面,而无需知道设备的 IP 地址。

用户将采取的步骤如下:

  1. 用户将设备插入网络/打开设备。
  2. 用户在浏览器中输入“配置”地址并被带到配置页面。(无需网络配置/IP 查找等)

根据研究,我相信 Avahi (/Bonjour/Zeroconf) 可以使这成为可能,但我不清楚以下几点:

  1. Avahi 是最简单的方法吗?
  2. 如果我的设备是本地网络上运行 Avahi 的唯一设备,它会起作用吗?(即不需要在网络上的任何其他计算机上安装软件)。
  3. 它可以跨平台工作(osx/*nix/windows)吗?
  4. 它会跨浏览器工作吗?

感谢您的任何帮助/见解。

0 投票
1 回答
980 浏览

avahi - avahi 与一台多宿主主机隔离的 mDNS 域

我们正在尝试在我们的校园无线网络上启用许多 mDNS 广告服务,最显着的是 airplay。在我们的例子中,airServers 将位于我们的有线网络上,因此我们需要在无线端使用 DNS-SD 或 mDNS 手动通告服务。我们已经在 avahi 中使用静态服务广告来实现这一点,它非常流畅,但我们遇到了扩展问题。

我们在校园内的各种教室中可能有 150 台 AirServer 主机。如果我们要启用所有这些,那么在 iPad 上可供选择的列表将非常大(更不用说当教员忘记更改密码时,学生们非常喜欢从校园内接管 AirServer)。

我们想要做的是在每个建筑物的单个 vlan 上隔离我们的无线网络,以形成 27 个 mDNS 段,然后运行 ​​avahi 以通告每个段中的服务,最好是在可以访问所有段的单个多宿主主机上.

我希望 avahi-daemon 会在 avahi-daemon.conf 中获取一个指向唯一服务目录的参数,这样我就可以拥有多个配置文件,每个配置文件都有不同的 allow-interfaces 子句和指向不同服务的指针目录,但这似乎不是一个可配置的选项。

我正在考虑 chroot 监禁多个 avahi 副本,但这似乎真的很笨拙。

我是否错过了一些更明显的策略来处理这个而不创建 27 个单独的主机?

非常感谢!

京东

0 投票
1 回答
4511 浏览

dns - 转储 Avahi & Bonjour、DNS-SD 区域文件

我希望改进 mDNS 的 Go 库:https ://github.com/davecheney/mdns/

我和作者谈过,他只是说“我把它弄到了对我有用的地步”,这很好,完全符合开源精神。

他提到了 Avahi、Bonjour 和 dns-sd 发现工具无法找到他导出的服务的一些互操作性问题。

我希望了解 Avahi 在使用端口和简单名称进行简单服务时发布的记录。

我曾期望一个合适的版本:

可能有 Avahi 导出它的区域,但它对我不起作用(提示“你做错了”!) - 我想了解典型 Avahi 服务导出的最少记录,并从自动检查相同从我笔记本上的 Apple 实现中导出Lee-Hambleys-Macbook.local,我可能能够改进对 mDNS 的 Go lang 支持。

当其他人使用 Avahi/Bonjour/mDNS 时,他们使用什么工具来挖掘并检查事情是否按预期工作?

#avahi 的好心人很友好地给了我以下提示:

这会导致avahi-daemon将其区域文件转储到syslog.

但理想情况下,我想知道如何最好地查询服务器,tcpdump看起来也很有希望,但它仍然只显示被查找的记录,而不是区域中所有内容的完整转储: