标签: bonjour

Bonjour在iOS上发布

我正在尝试在我的iOS应用程序中创建一个Bonjour服务,但无法将其发布.只netServiceWillPublish调用委托方法,并且使用dns-sd不显示服务.

这是我的代码:

var service: NetService? = nil

func start() {
    createSockets()

    service = NetService(domain: "test", type: "_test._tcp.", name: "Test", port: Int32(port))
    service?.delegate = self
    service?.startMonitoring()
    service?.publish()
    service?.setTXTRecord(NetService.data(fromTXTRecord: [
        "model": "AppleTV3,2,1".data(using: .utf8)!,
        "srcvers": "160.10".data(using: .utf8)!,
        "features": "0x100009FF".data(using: .utf8)!,
        "deviceId": "b8:53:ac:43:f3:15".data(using: .utf8)!,
        "pw": "0".data(using: .utf8)!,
        "rmodel": "MacBookPro10,2".data(using: .utf8)!
        ]))

}

private func createSockets() {
    ipv4Socket = CFSocketCreate(kCFAllocatorDefault, PF_INET, SOCK_STREAM, IPPROTO_TCP, kCFSocketAutomaticallyReenableAcceptCallBack, socketCallback, nil)

    var sin = sockaddr_in()

    memset(&sin, 0, MemoryLayout<sockaddr_in>.size)
    sin.sin_len = __uint8_t(MemoryLayout<sockaddr_in>.size)
    sin.sin_family = sa_family_t(AF_INET); /* Address family */ …
Run Code Online (Sandbox Code Playgroud)

sockets bonjour ios swift

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

如何判断bonjour服务是wi fi还是蓝牙?

我正在构建一个在两个iPhone之间发送信息的应用程序.该应用程序运行良好,但我遇到的一个问题是,我无法告诉bonjour是否选择Wi-Fi或蓝牙来建立连接.我想让用户能够选择他们喜欢的.此外,有没有办法以编程方式告诉设备的蓝牙是否开启?

networking p2p bonjour bluetooth wifi

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

Bonjour COM库在哪里?

我在Win7 64bit机器上下载并安装了适用于WindowsBonjour SDK.

我试图在C:\ Program Files\Bonjour SDK\Samples\CS中构建这两个项目.然而,他们都引用了Bonjour,导致我得到以下构建错误'无法加载类型库以供参考"Bonjour".图书馆未注册.

Bonjour似乎安装正确,因为我可以运行Bonjour打印机向导,它似乎正常工作.

知道Visual Studio无法找到库的原因吗?

顺便说一句,我正在使用Visual Studio 2008.

.net c# windows sdk bonjour

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

iOS Bonjour通过互联网

我知道iOS的Bonjour实现(NSNetService,NSNetServiceBrowser)在本地网络上开箱即用.

文档说可以设置Bonjour DNS服务器以允许通过互联网连接用户,所以我的问题是:

  1. 什么是Bonjour DNS服务器界面?我可以从一个样本开始吗?
  2. DNS服务器负责对等体和其余部分(发送\ rec数据)的初始握手\连接是否将直接在对等体之间进行?
  3. DNS服务器是否提供NAT穿孔机制?

谢谢!

networking bonjour ios

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

改善dll缺失错误消息

我有一个用QT编写的程序,运行得很好.但是它对dnssd.dll有间接依赖,因为程序加载的dll使用了bonjour.如果运行该程序的机器上没有安装bonjour,它会说

程序无法启动,因为您的计算机缺少dnssd.dll.尝试重新安装该程序以解决问题.

我没有通过LoadLibrary或其他方式加载此DLL .我将二进制文件与存根链接起来,以便之前自动加载int main.

显然重新安装程序并不能解决问题.对我而言,它清楚地说我需要安装bonjour,但对于大多数用户来说,这是极其神秘的.

我宁愿将此错误消息更具信息性,例如"需要为此应用程序安装Bonjour才能正常工作,请转到[insert-url-here]下载它."

有没有办法检测dll何时无法加载loke并提供更好的错误消息?

c++ dll qt bonjour

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

替代使用Bonjour协议进行iPhone对等

我正在实施一个iPhone/iPad应用程序,允许用户使用bonjour协议发送彼此的消息.基本上,服务器通过bonjour发布他的服务,连接到同一wifi的客户端可以发现他的服务并连接到它以开始发送消息.我发现的问题是有些路由器似乎与Bonjour有问题.在家里或其他地方运行我的应用程序时,它运行得很好.出版和发现的bonjour服务完美无瑕.然而,当我在我朋友的一间公寓试用我的应用程序时,一些(并非所有)客户都无法发现已发布的bonjour服务.我还注意到其他使用Bonjour的应用程序(例如Apple的远程应用程序)在所述网络上也遇到了麻烦.在做了一些挖掘后,我发现其他人在使用bonjour和一些路由器方面遇到了类似的问题.因此我有两个问题:

1)有没有人知道一些路由器似乎有Bonjour的这个问题是一个普遍的问题?换句话说,如果我的应用程序依赖于Bonjour才能运行,我是否必须担心它不会在50%的WLAN网络中运行,或者大多数路由器都没有任何bonjour问题.显然,我不能指望任何人知道每个路由器如何处理bonjour数据包,但也许有一些网络大师可以指出我正确的方向:-p.

2)其次,如果bonjour对于构建我的应用程序的协议风险太大,有哪些替代方案具有类似的功能?我(优选地)需要的特征是服务发布和发现,而无需用户手动输入其他电话的IP地址.

好的,谢谢你的帮助!我知道这是一个广泛的问题,但任何帮助表示赞赏!:)

iphone networking p2p bonjour

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

bytesWritten,但其他设备从不接收NSStreamEventHasBytesAvailable事件

我在iPhone和Mac之间建立了一个Bonjour网络.

用户在Mac中呈现的表格中选择iPhone的网络服务,并在两侧创建并打开一对流.

iPhone首先向Mac发送代码(整数).Mac成功收到它.

暂停用户输入和处理后,Mac会启动向iPhone发送代码:

NSInteger bytesWritten = [self.streamOut write:buffer maxLength:sizeof(uint8_t)];
// bytesWritten is 1.
Run Code Online (Sandbox Code Playgroud)

但iPhone永远不会获得NSStreamEventHasBytesAvailable事件.我在此之前仔细检查了一下,iPhone的NSInputStream上的streamStatus是2,它应该是NSStreamStatusOpen.

什么想法可能是错的?


更新:我运行了一个测试,其中Mac是第一个向iPhone发送整数的测试.再一次,我从Mac的输出流中获得了1的bytesWritten,但iPhone从未得到过NSStreamEventHasBytesAvailable事件.

所以iPhone的输入流肯定有问题.但我仔细检查:

  • iPhone的self.streamIn在h文件中正确输入为NSInputStream
  • iPhone接收2个NSStreamEventOpenCompleted事件,并检查流arg的类.一个是KindOfClass:[NSOutputStream类],另一个不是.
  • iPhone永远不会收到NSStreamEventEndEncountered,NSStreamEventErrorOccurred或NSStreamEventNone.
  • 如上所述,在Mac写入输出流之后,iPhone的输入流状态为2,即NSStreamStatusOpen.

这是用于创建iPhone输入流的代码.它使用CF类型,因为它是在C风格的套接字回调函数中完成的:

CFReadStreamRef readStream = NULL;
CFStreamCreatePairWithSocket(kCFAllocatorDefault, socketNativeHandle, &readStream, NULL);
if (readStream) {
    CFReadStreamSetProperty(readStream, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanTrue);
    server.streamIn = (NSInputStream *)readStream;
    server.streamIn.delegate = server;
    [server.streamIn scheduleInRunLoop:[NSRunLoop currentRunLoop] 
                               forMode:NSDefaultRunLoopMode];
    if ([server.streamIn streamStatus] == NSStreamStatusNotOpen)
        [server.streamIn open];
    CFRelease(readStream);
}
Run Code Online (Sandbox Code Playgroud)

Update2:响应alastair评论的信息:

套接字选项

retain,release和copyDescription回调设置为NULL.optionFlags设置为acceptCallback.

套接字创建

这是用于在iPhone和Mac上设置套接字的方法,完成了我的评论尝试,以找出此代码中实际发生的事情,该代码改编自各种教程和实验(有效):

/**
 Socket creation, port assignment, socket scheduled in run loop.
 The socket represents the port on this app's …
Run Code Online (Sandbox Code Playgroud)

cocoa bonjour nsstream ios

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

使用bonjour将Mac与iPhone连接

我正在尝试使用我的Mac和iPhone之间的bonjour和蓝牙建立连接.

我一直在阅读,从这些网站我得知我不能像我第一次尝试那样使用NSNetService.

Bonjour over bluetooth没有Gamekit?

在iOS 5.0上通过蓝牙进行Bonjour

所以我修改了DNSSDObjects示例代码,改为使用kDNSServiceInterfaceIndexP2P标志. DNSSDObjects

但我仍然无法将我的iPhone连接到我的Mac.如果我将标志更改回kDNSServiceInterfaceIndexAny,我可以通过Wifi(lan)建立连接.但是使用蓝牙使用kDNSServiceInterfaceIndexP2P或kDNSServiceFlagsIncludeP2P没有运气.

是否有东西缺失,甚至可以使用bonjour和蓝牙连接OSX和iOS?

macos bonjour bluetooth objective-c ios

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

IP摄像机及其支持的协议

大多数IP摄像机是否支持RTSP?

此外,除了使用uPnP和Bonjour之外还有其他方法可以在本地网络上检测IP摄像机吗?

bonjour upnp rtsp rtsp-client ip-camera

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

"Bonjour服务无法解决."

更新到6.3我启动时,Xcode我收到此消息.
知道怎么摆脱这个吗?

在此输入图像描述

编辑:为什么这个问题被搁置?许多人遇到同样的问题..

问题解决了.有关解决方案,请访问: https ://stackoverflow.com/a/29682940/1938719

iphone xcode bonjour ios

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

标签 统计

bonjour ×10

ios ×5

networking ×3

bluetooth ×2

iphone ×2

p2p ×2

.net ×1

c# ×1

c++ ×1

cocoa ×1

dll ×1

ip-camera ×1

macos ×1

nsstream ×1

objective-c ×1

qt ×1

rtsp ×1

rtsp-client ×1

sdk ×1

sockets ×1

swift ×1

upnp ×1

wifi ×1

windows ×1

xcode ×1