标签: zeroconf

发现Zeroconf/Bonjour节点?

是否有一种简单的方法可以扫描给定的网络以获取Bonjour/Zeroconf服务?

我有一套计算机(Linux,Windows,Apple),并希望在我的Intranet中自动生成所有可用的支持Zeroconf的网络节点的列表.

bonjour zeroconf

6
推荐指数
2
解决办法
8763
查看次数

如何在Visual C++中宣传Bonjour服务

我试图弄清楚这是否可行,但是通过Visual C++宣传Bonjour服务的最简单方法是什么?

windows bonjour zeroconf visual-c++

6
推荐指数
1
解决办法
2989
查看次数

Bonjour/Avahi/People-Nearby协议之间的差异

我最近发现,通过Ubuntu的同理心客户端,存在一种协议,使用户能够与他的实际本地网络上的任何人交谈.似乎同理心称这项服务为" 人们附近 "和Windows" 我附近的人 ".

经过一些研究后,我发现了更多信息:似乎"协议"被称为Avahi(或Apple的Bonjour/Salut(?)),允许用户连接到网络上的用户,打印机和文件.

我的问题:

  1. Bonjour,Avahi,附近的人,附近的人...这些东西是同一个东西的不同名称,即连接到同一网络上的"东西"(用户/打印机/文件)?这些是Zeroconf的不同实现吗?
  2. 哪种IM支持这种协议?AIM,Trillian和Empathy都支持它,对吗?哪些可用于智能手机(Android)?我认为Trillian和WiChat也是如此,但仅适用于iOS.
  3. 是否有Android应用程序为即时消息实现Bonjour或Avahi的服务?

android bonjour zeroconf instant-messaging

6
推荐指数
2
解决办法
2666
查看次数

在PlayBook/Blackberry上使用Bonjour/Zeroconf/jmDNS在网络上查找设备

我想开发一款可以在Blackberry PlayBook上运行的Android应用程序.应用程序需要在运行相同应用程序的本地网络上查找其他设备.

我正在考虑实施Bonjour/Zeroconf/jmDNS协议来寻找设备,但......

我刚学会了android权限

android.permission.CHANGE_WIFI_MULTICAST_STATE

Blackberry或PlayBook不支持.(需要首选jmDND(Bonjour)协议才能工作.)

https://bdsc.webapps.blackberry.com/android/apisupport/

你能给我一些建议吗?这是在PlayBook上实现这一目标的最佳方法.还有其他选择吗?

如果使用原生SDK或Adobe AIR构建,是否可以使用Bonjour?

bonjour zeroconf jmdns blackberry-playbook

6
推荐指数
1
解决办法
877
查看次数

使用zeroconf可以发现Spring Boot应用程序

如何Java构建可Spring Boot发现的Web应用程序应用程序zeroconf

我试过以下JmDNS但它似乎不起作用:

@Bean
public JmDNS jmdns() {
    try {
        JmDNS jmdns = JmDNS.create(InetAddress.getLocalHost());
        ServiceInfo serviceInfo = ServiceInfo.create("_http._tcp.local.", "appName", port, "path=index.html");
        jmdns.registerService(serviceInfo);
        return jmdns;
    } catch (final Exception e) {
        logger.error(e.getMessage());
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

在此之后,我希望能够在Windows 10网络概述中看到该服务,但它不会出现在那里.

编辑

该应用程序列在avahi浏览器中,显示它以某种方式工作.

但我的目标是让它在Windows网络服务概述中可见.

java windows zeroconf jmdns spring-boot

6
推荐指数
0
解决办法
292
查看次数

如何使用Android的本机网络服务发现查找所有可用服务

我已经阅读了使用NSD查找特定网络服务的android 文档.以下是我发现所有可用_http._tcp服务的代码.

final NsdManager.DiscoveryListener discoveryListener = new NsdManager.DiscoveryListener() {
    @Override
    public void onDiscoveryStarted(String s) {
        Log.i(TAG, "onDiscoveryStarted: " + s);
    }

    @Override
    public void onServiceFound(NsdServiceInfo nsdServiceInfo) {
        Log.i(TAG, "onServiceFound: " + nsdServiceInfo.toString());
    }

    @Override
    public void onServiceLost(NsdServiceInfo nsdServiceInfo) {
        Log.i(TAG, "onServiceLost: " + nsdServiceInfo.toString());
    }

    @Override
    public void onDiscoveryStopped(String s) {
        Log.i(TAG, "onDiscoveryStopped: " + s);
    }

    @Override
    public void onStartDiscoveryFailed(String s, int i) {
        Log.i(TAG, "onStartDiscoveryFailed: " + s);
    }

    @Override
    public void onStopDiscoveryFailed(String s, int …
Run Code Online (Sandbox Code Playgroud)

networking android zeroconf discovery nsd

6
推荐指数
2
解决办法
1612
查看次数

Avahi dns_sd兼容层无法运行浏览回调

背景

我正在为Haskell开发一个跨平台的Zeroconf/Bonjour/DNS-SD库,并且认为我最好的选择是定位dns_sd.hAPI.在Linux下,此接口的实现由Avahi提供,Avahi声称支持Bonjour API的一个子集.

问题

作为我的库的健全性检查,我在C中编写了一个小型测试程序,它只使用了API的基础.它浏览网络上的任何类型的服务_http._tcp,一看到它就打印一条消息,然后死掉:

#include <dns_sd.h>
#include <stdio.h>
#include <stdlib.h>

void cb(DNSServiceRef sdRef,
        DNSServiceFlags flags,
        uint32_t interfaceIndex,
        DNSServiceErrorType errorCode,
        const char *serviceName,
        const char *regtype,
        const char *replyDomain,
        void *context) {
  printf("called!\n");
}

int main() {
  DNSServiceRef sd = malloc(sizeof(DNSServiceRef));
  const char *regtype = "_http._tcp";
  DNSServiceErrorType err1 = DNSServiceBrowse(&sd, 0, 0, regtype, NULL, &cb, NULL);
  printf("err1=%d\n", err1);
  DNSServiceErrorType err2 = DNSServiceProcessResult(sd);
  printf("err2=%d\n", err2);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

在我的Mac上,这个测试程序在C和等效的Haskell中都运行良好(它找到了我的打印机;令人兴奋!):

$ gcc test.c -o …
Run Code Online (Sandbox Code Playgroud)

c bonjour zeroconf avahi dns-sd

5
推荐指数
1
解决办法
1789
查看次数

适用于Windows 8的Zeroconf库

我正在制作需要使用的Windows 8 metro应用程序zeroconf library.根据我的观察,有一些库和最值得信赖的库Mono.Zeroconf.但是我似乎无法通过NuGet安装它,我得到一个错误,说"无法安装Mono.Zeroconf,因为它与解决方案中的任何项目都不兼容."

"该软件包的目标是以下框架:.NETFramework,Version = v2.0"

.

Mono.Zeroconf是否有任何记录良好的替代方案或我可以做的任何其他方法使其在我的Windows 8应用程序上运行?

编辑:好吧,我试图使用零配置库在这里,但我只是通过调用简单函数得到一个错误.我打电话的时候

await ZeroconfResolver.BrowseDomainAsync();
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

mscorlib.dll中出现"System.InvalidOperationException"类型的异常,但未在用户代码中处理

WinRT信息:Socket已经绑定到一个地址.

附加信息:在意外时间调用方法.

任何人都知道为什么会这样或者如何解决?

提前致谢.

c# mono zeroconf windows-8

5
推荐指数
0
解决办法
628
查看次数

在网络上发现IoT设备

我想尽可能多地发现有关网络上物联网设备的信息.我见过代码来枚举设备,找到IP地址和MAC地址,但我还能找到什么?特别是,我想知道有些东西是灯,更重要的是,制造商是什么.

我一直在查看IoTivity和AllJoyn的一些文档以及各种零配置协议.据我所知,这些事情更关注所暴露的服务,而不是设备的确切含义.

我误解了吗?是否有某种方法来映射本地网络并确切知道每个设备是什么?

network-programming zeroconf alljoyn iot iotivity

5
推荐指数
1
解决办法
3533
查看次数

NSdManager ResolveListener 错误代码 3:失败已经激活

我在 Android 应用程序中使用 NsdManager 来发现由我开发的另一台设备发布的 NSD 服务。我只在 Android App 上做服务发现(这边不需要服务注册)。网络上同时发布了多个相同类型服务的实例。

我开始使用 Google 提供的示例代码(https://developer.android.com/training/connect-devices-wireless/nsd),但由于同时重复使用同一个解析器对象不止一个,我遇到了致命错误服务解决。然后我发现有几个人建议每次都创建一个新的解析器对象(例如在Listener already in use (Service Discovery) 中)。

我这样做了,致命错误被解决失败错误代码 3 取代,这意味着解决过程处于活动状态。比以前好多了,但只有第一个服务得到解决,其余的都因为这个失败而被忽略了。

然后我发现有人建议对错误代码 3 进行特殊处理,方法是递归地重新发送解析请求,直到它最终被解析(NSNetworkManager.ResolveListener 消息 Android)。

我在 Kotlin 中实现了这个解决方案,它有点工作,但我并不满意,因为:

  1. 我相信我正在创建很多额外的 Resolver 对象,我不确定它们以后是否会被垃圾收集。
  2. 我正在循环重试几次,可能会给设备和网络造成额外和不必要的负担。不确定我是否应该在再次调用服务解析之前添加一个短暂的睡眠。
  3. 如果出现网络问题,程序可能会尝试数千次来解析同一个服务,而不是仅仅放弃解析并等待再次发现该服务。

RxBonjour2 的人提供了一个更复杂和更强大的解决方案,但它太复杂了,我无法遵循它:https : //github.com/mannodermaus/RxBonjour/blob/2.x/rxbonjour-drivers/rxbonjour-driver-nsdmanager /src/main/kotlin/de/mannodermaus/rxbonjour/drivers/nsdmanager/NsdManagerDiscoveryEngine.kt

我对 Google 的官方示例没有正确处理这些问题感到沮丧。nsd_chat 示例使用单个解析器对象,并且在网络上以相同类型发布多个相同类型的服务时失败。

你能提出更好的解决方案吗?或者对我下面的代码有什么改进?

import android.app.Application
import android.content.Context
import android.net.nsd.NsdManager
import android.net.nsd.NsdServiceInfo
import androidx.lifecycle.AndroidViewModel
import timber.log.Timber


class ViewModel(application: Application) : AndroidViewModel(application) {

    // Get application context
    private val myAppContext: Context = getApplication<Application>().applicationContext …
Run Code Online (Sandbox Code Playgroud)

android bonjour zeroconf nsd nsdmanager

5
推荐指数
2
解决办法
1421
查看次数