问题标签 [jmdns]

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 回答
144 浏览

android - 发现设备时不调用 serviceRemoved

我正在开展一个需要发现同一 Wi-Fi 网络中的所有设备的项目。为了实现这一点,我使用了 Jmdns库。

它给了我注册到当前网络的设备列表,但是当设备取消注册时,它应该调用ServiceListener的serviceRemoved方法。但是,当设备未注册时,它不会调用。serviceRemoved

这是我的代码:

当设备从网络中注销时,为什么serviceRemoved没有被调用?任何建议表示赞赏。

0 投票
1 回答
529 浏览

android - 如何使用 Android 获取 MAC 地址 - jmdns

我需要获取特定设备的 Mac-Address。我正在使用 Android - jmdns 服务来扫描设备并获取 IP 地址现在我需要获取特定设备的 Mac-Address。我们可以在获取时获取 Mac-Address使用 Android 的 IP 地址 - jmdns 服务或任何其他方式使用 IP 地址获取 Mac 地址?

0 投票
1 回答
252 浏览

android - Physical Web mDNS android 测试 - 广告信标应用未显示

我正在尝试在 Android 上复制这个RaspberryPI 示例

我为 android 创建了一个应用程序来使用 mDNS(jmDNS 库)宣传 URL,该应用程序运行良好,我可以使用ZeroConf Browser 应用程序在另一部手机上接收消息

但是,当我尝试使用Physical Web 应用程序接收相同的消息时,没有任何反应,该应用程序找不到该服务。

我相信问题出在我发送主机名和 txt 记录的方式上。

这是我的代码:

你能帮我理解什么是错的吗?

0 投票
1 回答
1797 浏览

java - 使用网络服务发现在 Java 服务器和 Android 客户端之间进行通信

我正在构建一个 Java 服务器应用程序(在 pc 上运行),它使用JmDNS将自身注册到本地网络,以及一个应该使用Network Service Discovery发现 java 服务器的 Android 客户端应用程序。
当我先运行android应用程序,然后运行java服务器时,应用程序成功发现注册的java服务器。
但是,当我第一次运行服务器然后运行 ​​android 应用程序时,该onDiscoveryStarted方法被调用但该onServiceFound方法从未触发 - android 应用程序没有发现服务器。在我看来,这似乎是一种意想不到的行为。

成功案例
Android 应用程序日志:
08-24 22:42:06.157 NSD_DISCOVER onCreate
08-24 22:42:06.373 NSD_DISCOVER:onDiscoveryStarted 服务发现开始
08-24 22:42:30.256 NSD_DISCOVER:onServiceFound 已知服务类型:_http._tcp。
08-24 22:42:30.293 NSD_DISCOVER: onServiceResolved 解决成功。名称:NsdApp,类型:._http._tcp,主机:/10.0.0.2,端口:52288

Java 服务器日志:
START
REGISTERED
END
WAITING_FOR_MESSAGE
hello world
END_THREAD

失败案例

Android 应用程序日志:
08-24 22:05:21.690 NSD_DISCOVER﹕onCreate
08-24 22:05:21.908 NSD_DISCOVER﹕onDiscoveryStarted 服务发现开始

Java 服务器日志:
START
REGISTERED
END
WAITING_FOR_MESSAGE

服务器代码

客户端代码

}

0 投票
1 回答
481 浏览

java - Android 上的 Proguard 和 JMDNS 问题

故事是这样的:我需要为一个 Android 库配置 Proguard,其中包含一个带有 JMDNS 库的 .jar 文件。我知道代码可以完美运行。

当我启用 proward 并尝试构建库时,控制台上会打印以下错误

读了一下,我发现标签-dontwarn可以用来忽略这种类型的警告。应用后,控制台显示此警告

有没有办法摆脱该消息,以便编译过程可以继续?我试图-dontwarn用失败的方法添加另一个,甚至-ignorewarnings没有成功的标签。

顺便说一下,我的 proguard-rules.pro:

提前致谢

0 投票
1 回答
1654 浏览

java - 是否有使用 mdnsjava 的有效网络服务发现示例?

问题

我正在尝试开始为我的 Java 客户端/服务器应用程序进行网络服务发现——基本上,我只是希望客户端在没有配置的情况下在同一以太网段上找到服务器。我想为将来有客户在其他平台上提供服务。可能只是 NETCF 和 Android。这不应该是火箭手术。

选项

浏览此处列出的选项几个小时似乎表明 mdnsjava 是目前最好的选择。我在下面发布了一些我的研究,但我目前的声誉仅限于两个链接。

我得到了Jmdns示例来编译、注册和浏览而没有太多的悲伤……但它根本无法可靠地工作。浏览器返回 255.255.254 子网的 IP 地址,在那些情况下它根本找到了服务。

Mdnsjava 得到了更好的评价,但我完全没有让它运行。我发现的示例是不独立的代码片段,javadocs 并不是真正的文档——它们只是带有未命名(但强制)参数的公共方法列表。

Avahi4j 自 2009 年以来一直停留在 v0.1。没有花任何时间在上面。

Bonjour 显然需要非 Apple 平台上的系统库。

我承认对 Upnp 一无所知,看起来需要大量的基础设施才能满足我的最低要求。

问题

是否存在使用 mdnsjava 注册服务的可编译的工作示例?如果这是我在 2015 年的最佳行动方案,我准备被告知调查另一个图书馆。

0 投票
1 回答
167 浏览

java - JmDNS - 在多台机器上注册相同的服务

我正在使用 JmDNS 在我网络中同一子网下的几台机器上注册服务。但是,每次第二台机器启动并尝试注册服务时,它的名称都会自动更改为“service_name (number)”之类的名称。我认为发生这种情况是因为服务的名称可以在网络中保持唯一,并且在解决它时不会发生冲突。但是,我在想是否没有办法在网络中注册具有相同名称的服务并将负责该相同服务的机器的 IP 地址分组。例如:我的网络中有三台机器,它们都将提供服务 X。所以当他们注册服务时,而不是让服务 X 将其名称更改为“X (2)”,而“X ( 3)”,它们都保持为“X”

我知道我可以使用服务侦听器并执行诸如正则表达式检查之类的操作,如果服务名称与“X”有某种关联,例如“X (2)”,那么我将其 IP 地址添加到我的地图中。但我想只使用库(当然如果可能的话)来做到这一点,而不是手动。

谢谢。

0 投票
1 回答
396 浏览

android - MulticastSocket Android 与互联网有关吗?

我正在向多播组添加一个网络接口(eth)以进行网络广播,因为我需要创建jMDNS对象。以太网接口TCPIP用于蓝牙。我面临一个问题,在服务发布中加入多播组后,需要激活 Internet/Wifi 才能创建 jMDNS 对象。在 jmdns 的客户端服务发现中,不需要创建 Multicast 或加入 Multicast Group。

因此,如果在创建多播套接字并加入组后发布服务,当我创建 jmdns 对象(不打开 Internet/Wifi)时,我会遇到异常

java.net.SocketException:setsockopt 失败:ENODEV(没有这样的设备)

如果我在 jmdns 上打开 Internet/Wifi 并且一切正常。

所以我的问题是为什么当我明确使用网络接口进行蓝牙泛绑定时需要打开 Internet/Wifi?

有没有办法解决这个问题?或BT-Tethering总是需要互联网连接?

我在 Android 框架中使用 java 作为编程语言。

0 投票
0 回答
72 浏览

java - JmDNS 偶尔会检测到两个具有相同 IP 地址的不同设备

我正在开发一个 android 应用程序,它通过 JmDNS 从本地网络发现设备,大多数时候,它工作得很好,但我发现JmDNS偶尔会从日志中检测到两个具有相同 IP 地址的不同设备。

0 投票
0 回答
220 浏览

javascript - 使用 mdns-js 将 raspberrypi.local 解析为 javascript 中的 ip 地址

我有一个连接到我的网络的 Raspberry Pi 和一个连接到同一网络的 Samsung Gear S。Raspberry Pi 用作服务器,Gear S 向其发送数据。目前,每当我连接到另一个网络时,我都需要在 Gear S 应用程序中手动插入 Raspberry Pi IP 地址。我发现你可以使用 raspberrypi.local 并且 raspberry pi 会识别出它拥有的这个地址。我的问题是,当我尝试使用 Javascript 向地址“ http://raspberrypi.local:8080/appdata/post ”发布内容时,帖子没有实现。我想 raspberrypi.local 无法解决。

我偶然发现了 mdns-js ( https://www.npmjs.com/package/mdns-js ),我认为这应该可以解决我的问题。我想运行以下示例:

但我收到以下错误:

我使用http://requirejs.org/中的 require 函数。任何可以帮助我解决此错误或更好地解决我的问题的人。谢谢