标签: bonjour

CFNetwork和Bonjour集成,适用于iPhone到Mac的集成

我想结合使用CFNetwork和Bonjour,以便能够在我的iPhone应用程序和Mac应用程序之间进行通信.iPhone上的应用程序只有一个按钮.然后在Mac应用程序上,会有一个标签.如果按下iPhone应用程序上的按钮,则Mac应用程序上的标签会发生变化.

是否有可以执行此操作的示例代码?如果没有,有人可以引导我朝着正确的方向前进吗?

谢谢!

iphone macos bonjour objective-c cfnetwork

20
推荐指数
2
解决办法
1万
查看次数

在Javascript中发现Bonjour?也许?

所以它是一个远景,我将从那开始.

是否可以单独在javascript中发现bonjour广告的HTTP服务?

为什么这会有用?想象一下本地服务正在寻找一些数据(例如您当前的纬度/经度),数据通过网络服务公开并由Bonjour Zeroconf做广告.一个(远程)网站可能想知道你当前的纬度/经度,而不是必须知道你正在运行MyGPSserverVersion2,该网站可以使用javascript搜索本地bonjour _Compatible_location_services._tcp,然后一旦有了IP地址就继续.

如果这是不可能的(我认为可能就是这种情况,Javascript是相当受限制的)然后有什么障碍,是否有人对如何克服它们有任何想法?

javascript bonjour zeroconf

18
推荐指数
2
解决办法
1万
查看次数

错误:dns_sd.h:没有这样的文件或目录

我正在尝试使用Bonjour构建一个演示项目,遵循本教程,但我收到此错误:

错误:dns_sd.h:没有这样的文件或目录

它出现在这一行:

#include <dns_sd.h>
Run Code Online (Sandbox Code Playgroud)

我从哪里获得该头文件?

c++ qt bonjour

18
推荐指数
1
解决办法
2万
查看次数

iPhone:Bonjour NSNetService IP地址和端口

请原谅我的iPhone/Objective-C新手状态!

我发现我的HTTP服务器使用NSNetServiceBrowser,但现在我只想要找到服务的IP地址和端口.

我的委托方法中有以下内容:

NSNetService* server = [serverBrowser.servers objectAtIndex:0];

NSString            *name = nil;
NSData              *address = nil;
struct sockaddr_in  *socketAddress = nil;
NSString            *ipString = nil;
int                 port;
uint                 i;
for (i = 0; i < [[server addresses] count]; i++)
{
    name = [server name];
    address = [[server addresses] objectAtIndex:i];
    socketAddress = (struct sockaddr_in *)
    [address bytes];
    ipString = [NSString stringWithFormat: @"%s",
                inet_ntoa (socketAddress->sin_addr)];
    port = socketAddress->sin_port;
    NSLog(@"Server found is %s %d",ipString,port);
}
Run Code Online (Sandbox Code Playgroud)

但是,即使调用了委托,也永远不会输入for循环.有任何想法吗?谢谢!

iphone bonjour

17
推荐指数
2
解决办法
2万
查看次数

升级到Xcode 6.3后,在启动时我现在收到错误:"无法解析Bonjour服务."

升级到Xcode 6.3之后,我现在得到一个错误的警告面板:The Bonjour service could not be resolved. The server may be temporarily unavailable. Contact your system administrator.我该如何解决这个问题?

xcode bonjour ios

16
推荐指数
1
解决办法
779
查看次数

我可以从命令行使用Bonjour吗?

是否可以从命令行使用Bonjour?例如,如果我想注册一个服务,我输入类似的东西:bonjour -register service_name port.然后Bonjour为我的服务分配一个免费的IP.或者,例如,如果我想查看可用服务列表,我输入类似:bonjour -showServices.然后我获得所有可用服务的列表及其名称,IP地址和端口.这样的事情存在吗?

我对现有文档感到困惑.例如这里,在文档的开头我看到:

要注册您的服务,请调用DNSServiceRegister.

我应该在哪里打电话?在命令行?在Java?在C++中?在python中?没有提供这种背景有点奇怪.

一般来说,我只找到关于zeroconf和Bonjour的一般信息(它应该做什么).但我找不到具体而简单的东西.像"Hello World"一样使用Bonjour的例子.

任何人都可以帮助我吗?

networking bonjour zeroconf

15
推荐指数
3
解决办法
2万
查看次数

Android NSD - 永久挂起/运行 - 特定于设备?

我正在尝试在我公司的专有硬件设备上执行服务发现,该设备拥有自己的WiFi网络,并在该网络上宣传一项bonjour服务.当我连接到那个WiFi网络时,我正在使用NSD来发现该服务并解决它.

代码非常简单,通常效果很好而且很快.除了我有一个相当反复出现的问题(10次尝试中有5次)到目前为止本地化我的三星S8 +.到目前为止无法在S6或Pixel XL上重现.

问题是DiscoveryListener除了onDiscoveryStarted()之外从未做过任何事情,它只是永远运行.如果我杀了应用程序并重新开始,有时候它会继续挂起.

这就像有一个被阻塞的线程或东西,但是在日志中没有有用的信息(我能找到),而且我还没有发现任何东西可以锁定,因为我可以做些什么来从中恢复.

我添加了一个超时,它将在30秒后停止监听器,但通常在我重试之后它仍然无效.

服务发现过程包含在LiveData中,LiveData在活动时启动.

    const val SERVICE_TYPE_FOO = "_foo._tcp."

    private val serviceDiscoveryListener = ServiceDiscoveryListener()

    override fun onActive() {
        super.onActive()
        stopRunnable = StopDiscoveryRunnable()
        nsdManager.discoverServices(
            SERVICE_TYPE_FOO,
            NsdManager.PROTOCOL_DNS_SD,
            serviceDiscoveryListener
        )
        handler.postDelayed(stopRunnable, SERVICE_DISCOVERY_TIMEOUT_MS)
    }

private lateinit var stopRunnable: Runnable

private inner class StopDiscoveryRunnable : Runnable {
    override fun run() {
        try {
            nsdManager.stopServiceDiscovery(serviceDiscoveryListener)
            Timber.w("service discovery timed out")
            postValue(ServiceDiscoveryState.Error)
        } catch (e: Throwable) {
            // no-op
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

听众很简单......

private inner class ServiceDiscoveryListener : NsdManager.DiscoveryListener {
    override fun onServiceFound(serviceInfo: NsdServiceInfo?) …
Run Code Online (Sandbox Code Playgroud)

android mdns bonjour dns-sd nsd

15
推荐指数
0
解决办法
494
查看次数

在Zeroconf/Bonjour上发布的最简单方法?

我有一些我想用zeroconf看到的应用程序.

  1. 有一种简单的可编写脚本的方法吗?
  2. 我的网络管理员是否需要执行此操作才能启用此功能?

Python或sh是首选.特定于操作系统的建议欢迎使用Linux和OS X.

python bonjour zeroconf

14
推荐指数
4
解决办法
9219
查看次数

有无法在无线网络上检测iPad或iPhone的方法吗?你好?

我正在尝试检测连接到无线网络的Apple设备.使用Bonjour相对简单,但我也试图检测它是什么类型的设备.比如,MacBook Air,MacBook Pro,MacPro,iPhone,iPod或iPad.

我发现Bonjour对MacBook和MacPros的请求包括对查询的"附加部分"响应,其中包括模型:

;; ADDITIONAL SECTION:
Q9550._device-info._tcp.local. 10 IN    TXT "model=MacPro3,1"
Run Code Online (Sandbox Code Playgroud)

;; ADDITIONAL SECTION:
Air._device-info._tcp.local. 10 IN  TXT "model=MacBookAir4,2"
Run Code Online (Sandbox Code Playgroud)

通过测试iPhone(3GS和4),iPod touch和iPad2,所有iDevices只响应他们的名字:

;; ANSWER SECTION:
111.1.168.192.in-addr.arpa. 10  IN  PTR gmPad2.local.
Run Code Online (Sandbox Code Playgroud)

显然,该名称可能无法反映该设备.所以,我不想尝试从名称中推断出设备的类型.有没有人知道检测iDevice类型的任何其他方法?


编辑:为了清楚,我使用的命令是:dig @ 224.0.0.251 -p5353 -x 192.168.1.111 ...替换Apple设备的IP地址

bonjour discovery ios

14
推荐指数
1
解决办法
1万
查看次数

Ionic 2找不到模块'dgram'

我已经安装了模板Ionic 2应用程序并想要添加NPM包 bonjour

在我的组件中安装并包含这样的包之后:

var Bonjour = require('bonjour');
var bonjour = new Bonjour();
Run Code Online (Sandbox Code Playgroud)

该应用程序将无法运行说明'找不到模块dgram'

该应用程序同时安装了bonjour包和bonjour类型.

问题

应用程序找不到位于@ types/node文件中的模块dgram.该项目正在运行TS 2.4.2 ,不需要任何对@types的引用,这应该自动获取.

我试过了什么

我尝试以多种方式包含@types文件夹,方法是在ts.config.json文件中设置typeroots或types.这并没有改变任何事情.

我尝试指定类型:

"types": ["node", "bonjour"]
Run Code Online (Sandbox Code Playgroud)

我尝试重新安装所有节点模块并清除缓存

我尝试在require语句上面的组件中包含一个引用路径:

/// <reference path="node_modules/@types/node/index.d.ts" />

var Bonjour = require('bonjour');
var bonjour = new Bonjour();
Run Code Online (Sandbox Code Playgroud)

这一切都没有帮助.有关如何使我的应用程序正确加载此模块的任何想法?

bonjour node.js ionic2

14
推荐指数
1
解决办法
982
查看次数