标签: bonjour

如何获取联网设备的"型号名称"(可能使用Bonjour)?

Apple的Finder.app能够始终如一地确定使用bonjour的每台物理计算机的确切模型(每个设备类型的图标都是独一无二的:iMac,MacPro,MBP等).他们如何做到这一点以及他们使用什么API?

另外,Bonjour为网络上的所有服务提供名称,服务类型,域和端口 - 但我无法找到有关如何查找设备模型本身的信息.

macos networking bonjour

12
推荐指数
2
解决办法
3168
查看次数

iOS上的NSNetServiceBrowser/Bonjour问题

我正在为我正在开发的iOS项目开发的应用程序中使用Bonjour(确切地说是NSNetServiceBrowser)而不是WiFi.

然而,尽管注意到为什么NSNetServiceBrowser在iPhone OS中找到未发布的服务的优秀响应中提出的问题我仍然遇到NSNetSericeBrowser的一些困难.

我的设置如下:

  • 使用运行iOS 4.5.3的iPad.
  • 使用AirPort Express作为接入点/路由器.
  • 在连接到网络的Mac上运行dns-sd -B _serviceName工作正常 - 也就是说,所有发布和停止的调用都会立即反映在桌面上.

但是,我遇到了以下问题: -

  1. 长期发布的服务(大约15分钟+)往往不会被客户删除,即使它们从Mac上消失了!(即不调用didRemoveService).
  2. 有时,网络上的其他人看不到发布的服务,即使它们出现在Mac上!(即未调用didFindService) - 这可能与下面的3/4点相关...如果应用程序在iPad连接到网络之前开始运行(和搜索),那么它不会搜索新网络正常.
  3. 如果设备在发布服务后更改网络会发生什么?我发现,卓悦并没有重新发布该服务的新网络上-一个人如何可以强制这种情况发生?
  4. 如果设备在搜索服务时更改网络会发生什么?我发现这也会导致问题,并且往往会导致找不到会话(未调用didFindService).

我一直遇到的问题很奇怪,因为Bonjour 90%的时间都在工作......只有10%会破坏我的应用程序的可靠性!令人讨厌的是,通过双击主页按钮并强制关闭应用程序,然后重新运行它,可以解决上述所有问题.再次运行后,它总是找到正确的会话或正确发布.

避免这个问题的一种方法是在无线网络发生变化时拆除并重新启动NSNetServiceBrowser ......但这似乎非常混乱和不必要.令人沮丧的是,Bonjour是一个高级API,没有任何实际的调整和测试选项.

我有什么想法可以解决问题1-4?

谢谢!

iphone bonjour nsnetservice ios nsnetservicebrowser

12
推荐指数
1
解决办法
7233
查看次数

bonjour如何在网络上发现设备?

我想编写一个可以在网络上搜索Bonjour启用设备的C程序.

基本上我们有一个网络IP摄像头,它支持Bonjour协议.我想在C中编写API,可以搜索启用了Bonjour的设备.有没有人有关于我该怎么做的示例代码或建议?

c bonjour

12
推荐指数
1
解决办法
6480
查看次数

mDNS究竟如何解析地址?

一旦通过DNS-SD发现服务,该主机的地址究竟如何得到解决,是否需要更多的时间/开销?

另外,如果我使用JmDNS或Bonjour有回调两个serviceFoundserviceResolved.如果我在设备发布某种服务的IP地址只是感兴趣,有没有获得比通过两个要去的地址更快/更有效的方式serviceFoundserviceResolved

谢谢

mdns bonjour jmdns dns-sd

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

使用来自iOS + Bonjour的Google Oauth2网络流(Yikes!)

我正在构建一个iOS应用程序,要求用户使用服务器端Web流通过Oauth2授权Google API.我目前打开一个UIWebView来启动oauth2流程.

这在模拟器中工作正常,因为我正在设置重定向URI http://localhost并在本地计算机上运行服务器.

但是,我还想在连接到桌面上运行的服务器的同时在设备上进行测试.为了做到这一点,我已经让应用程序发现我的桌面地址(本地子网IP或bonjour地址http://foo.local.)连接到服务器.但是,Google Oauth2流程表示它不能将本地URI用作重定向网址.

有没有办法解决?如果可能的话,我不想乱用我的本地网络设置或IOS设备的代理请求.理想情况下,我也希望能够使用bonjour服务来发现服务器,因为我们有一个开发人员团队,我们的应用程序允许您选择本地网络上您想要连接的服务器.

选项?

bonjour ios oauth-2.0 google-oauth

12
推荐指数
1
解决办法
843
查看次数

如何在iOS中通过wifi传输大文件

我从Apple的网站上下载了WiTap Code.它用于通过本地wifi网络传输数据.我正在一个项目中作为客户端 - 服务器架构进行交互.我正在从客户端向服务器发送NSData.

我做了两个项目; 一个用于客户端,一个用于服务器

在客户端项目,我做了以下更改为此我通过添加以下方法修改了AppController.m文件

AppController.m(客户端)

- (void)sendData:(NSData*)pobjData
{
    assert(self.streamOpenCount == 2);

    if ( [self.outputStream hasSpaceAvailable] ) 
    {
        NSInteger   bytesWritten;

        NSUInteger length = [pobjData length];

        bytesWritten = [self.outputStream write:[pobjData bytes] maxLength:[pobjData length]];

        NSLog(@"written bytes -> %d",bytesWritten);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后通过调用此方法我发送数据.

在服务器端项目,我做了以下chagnes,我通过修改以下方法修改了AppController.m文件

AppController.m(服务器端)

- (void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode
{
    #pragma unused(stream)

    switch(eventCode) {

        case NSStreamEventOpenCompleted: {
            self.streamOpenCount += 1;
            assert(self.streamOpenCount <= 2);

            // Once both streams are open we hide the picker and the game is …
Run Code Online (Sandbox Code Playgroud)

iphone bonjour nsstream ios

12
推荐指数
1
解决办法
4839
查看次数

如何获得所有可用域名上所有已公布的bonjour服务列表?

查看所有域并不是问题,但我找不到在网络上查找任何服务的正确方法.

iphone macos cocoa cocoa-touch bonjour

11
推荐指数
1
解决办法
8396
查看次数

NSNetService委托没有被调用

我正在尝试使用以下代码将NSNetService(名为"My_Mac")解析为后台应用程序中的IP:

NSNetService *service = [[NSNetService alloc] initWithDomain:@"local." type:@"_daap._tcp" name:@"My_Mac"];
[service setDelegate:self];
[service resolveWithTimeout:5];
Run Code Online (Sandbox Code Playgroud)

在同一个类中,我定义了这些委托方法:

- (void)netServiceDidResolveAddress:(NSNetService *)sender
- (void)netService:(NSNetService *)sender didNotResolve:(NSDictionary *)errorDict
Run Code Online (Sandbox Code Playgroud)

这是一个奇怪的部分:除非我在"[service resolveWithTimeout:5];"之后运行NSAlert,否则不会调用委托方法.有任何想法吗?

cocoa bonjour objective-c

11
推荐指数
2
解决办法
5201
查看次数

仅通过蓝牙和没有GKPeerPickerController设置iPhone P2P

我想在p2p游戏中使用自定义界面连接其他iDevices.我知道我可以使用GKSessionGKSessionDelegate或使用较低级别的Bonjour浏览.但他们俩都会通过蓝牙和wifi搜索设备.

我只想列出蓝牙设备.我知道这在过去被回答为不可能,但飞行控制应用程序似乎能够做到这一点.

iphone p2p bonjour bluetooth gamekit

11
推荐指数
1
解决办法
1890
查看次数

适用于iphone的bonjour

我想知道bonjour是公共还是私人api?我们可以直接在我们的应用程序中使用它吗?

iphone api bonjour

10
推荐指数
3
解决办法
9545
查看次数