问题标签 [nsnetservice]

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

iphone - NSNetService - 我如何确定它是 Mac 还是 iOS 设备?

有没有办法让我找出位于 NSNetService 上的设备是 iPhone、iPad 还是 Mac?我现在能想到的唯一解决方案是连接到所有找到的并 ping 它们,并让它们中的每一个都设置为使用该信息 ping 返回。我是否能够在所有这些设备上扩展 NSNetService 以使其本身具有“设备类型”?或者有没有更简单的方法?

0 投票
1 回答
536 浏览

xcode - NSNetService 的“停止”方法不起作用

我正在使用 NSNetService 使用 Bonjour 进行广播。但是当我想停止它时,我使用[netService stop]netService我的NSNetService. 它只是不会停止,它会被调用,但不会停止。netServiceDidStop没有被调用,所以我想我无法阻止它。顺便说一句,这个项目使用自动引用计数(ARC),我怀疑这是这个问题的原因。怎么了?

0 投票
2 回答
2164 浏览

objective-c - 如何通过 WiFi 连接 iPhone 应用程序上的多个对等点?

我有一个需要连接到多个对等点的 ios(iPhone) 应用程序的想法。我的代码基于WiTab (SampleCode-developer.apple.com) 示例。

当我的应用程序启动每个对等点时,创建单独的套接字(CFSocket)并通过 NSNetService 类发布。在特定实例中,NSNetServiceBrowser 类找到可用的对等点。并在TableView中显示他们的名字。当我在表格视图中选择行时,对应的对等地址已解析,连接建立并发送接收数据成功。

但我的意图是,我想在 tableView 中选择多行(多个对等)。并解析选定的对等地址。为此,我将选定的对等点信息存储到 NSMutableArray。当我单击(触摸)发送按钮时,我想解析选定的设备地址并将数据发送到选定的对等方。为此我做了这个代码

但它只会解决一个设备(self.selectedService objectAtIndex:0)。那么我如何解决多个对等地址/如何为多个设备建立连接。所以我的疑问是:-

  1. 是否可以通过 WiFi 同时连接多个设备?
  2. 如果是,同一模式下最多可以连接多少台设备?
  3. 哪种类型的 CFSocket 对多连接(TCP/UDP)有用?
  4. 是否需要在每个对等方中创建多个 CFSocket?
  5. 如果是,如何?他们有任何可用的文件吗?
  6. 是否需要建立会话?
  7. 如何解析多个设备的地址?
0 投票
1 回答
433 浏览

objective-c - NSNetService 委托和 ARC

在我的应用程序中执行以下操作不会调用委托:

我正在使用自动引用计数。在没有 ARC 的情况下做同样的事情是完美的。在调用委托之前释放 NSNetService 接缝。

我怎样才能防止这种情况发生?

非常感谢!

0 投票
3 回答
6363 浏览

ipad - 什么导致错误 NSNetServicesErrorCode = "-72000"?

我创建了一个简单的浏览器,可以使用 UIWebview 加载本地文件。起初,当我尝试预览 html 文件时,uiwebview 可以加载源文件并进行预览。但是在我最小化应用程序(应用程序进入后台),然后再次打开应用程序后,我收到了这个错误:

之后,uiwebview 无法加载源文件,当我登录错误时(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error,它显示此消息:

该应用程序没有崩溃,但旋转指示器永远不会停止。

有人能告诉我是什么原因导致这个案子吗?以及如何解决?

谢谢 :)

0 投票
1 回答
4301 浏览

ios - NSNetService/Bonjour 发现仅适用于 iPhone 模拟器

我正在开发一个需要基本客户端/服务器交互模型的 iPhone 应用程序。为此,我将使用 Bonjour 和 NSNetService,以及 NSNetServiceBrowser 来发现同一网络上的其他人。我遵循了几个不同的指南,它们或多或少具有相同的示例代码。

相关服务器代码

服务发布成功,即我得到 netServiceDidPublish: 回调

相关浏览器代码

现在这一切的结果很有趣:

  1. 在 iPhone 上运行,设备只能看到自己发布的 NSNetService。
  2. 在两台 iPhone 上运行,两台设备都看不到对方的 NSNetService。
  3. 在 iPhone Simulator 上运行,它会找到所有的 NSNetServices,包括它自己的。

iPhone模拟器截图

在此处输入图像描述

我在这里有点不知所措......模拟器完全按预期工作。但是在设备上却不是,我不能让 2 部不同的 iPhone 在同一个 WiFi 上看到对方,他们只能看到自己。知道这里发生了什么吗?

0 投票
0 回答
1065 浏览

iphone - 客户未发现 bonjour 服务

我刚刚开始学习设计 iphone 应用程序,并且正在尝试设置客户端服务器环境。作为初学者,我想首先确保我发布的服务对客户端是可见的。我在 Apple 文档的帮助下编写了服务器和客户端代码。但是,我发现虽然我的服务正在发布(调用了 netServiceWillPublish(NSNetService *)sender),但我的客户端并未识别此服务。在客户端调用委托函数 netServiceBrowserWillSearch:(NSNetServiceBrowser *)browser 使我相信客户端正在搜索服务。但是 didFindService 委托函数永远不会被调用。我很困惑为什么这不起作用。我已经从各个地方遵循了客户端的示例代码,并且我的代码与他们的代码相匹配。

我还有以下问题

  1. 服务名称(随传输层协议一起提供)可以是任何字符串吗?还是必须在http://www.dns-sd.org/ServiceTypes.html中指定。除了服务发现之外,这还有什么目的。

  2. 当我在服务器端打印出 NSNetService 对象的详细信息时(在设置套接字并启动服务之后),主机名被打印为(null)并且没有显示地址。从技术上讲,当服务打开时,这些不应该设置为值吗?如果是的话,有人可以告诉我我的代码哪里出错了吗?

我已经附加了我的项目的客户端和服务器代码块,其中完成了服务的发布和浏览。非常感谢您的帮助,因为我一直在处理这个问题。

这是浏览服务的客户端的代码片段

这是发布服务的服务器端的代码片段

这是告诉服务已发布并打印出我的 NSSocket 对象的详细信息的代码片段

谢谢维韦克
_

0 投票
0 回答
250 浏览

cocoa - 为什么我无法连接到苹果 _apple-midi._udp。使用 NSNetService 的 NetService?

在苹果发布的 bonjour 网络服务 _apple-midi._udp 上打开输入流时收到错误消息。我收到以下错误:错误域 = NSPOSIXErrorDomain 代码 = 61“操作无法完成。连接被拒绝”用户信息 = 0x100358780 {}。

Apple 是否对试图以这种方式访问​​ MIDI 流的人不满意?我正在尝试创建客户端可以从中选择的 midi 网络流的可发现列表。通过 MacOSX 连接时,我试图从等式中删除 Audio Midi Setup 应用程序。

谢谢,

帕特里克

0 投票
2 回答
5766 浏览

iphone - 通过 NSNetService 连接和发送数据

我正在尝试使用 NSNetService 在 iPhone 应用程序和 Mac 应用程序之间建立通信。

我已经设置了 Mac 应用程序以发布 iPhone 应用程序可以发现的 NSNetService,但我不知道如何在它们之间发送数据。

在我的 Mac 应用程序中,我发布了我的 NSNetService:

一切看起来都很好,并且触发了委托方法- (void)netServiceDidPublish:(NSNetService *)sender(在 Mac 应用程序中)。

在 iPhone 应用程序中,我创建了一个实例,NSNetServiceBrowser一两秒后它触发了didFindService委托方法。

紧接着它触发下一个委托方法- (void)netServiceDidResolveAddress:(NSNetService *)sender

这里不知道是connected还是not,can't find any connect method och connect state on sender.

所以我尝试使用以下命令写入输出流:

并且还用 . 更新 TXTRecordData [sender setTXTRecordData:data];。我没有收到任何错误,我的 Mac 应用程序也没有任何反应。Mac 应用程序具有委托方法- (void)netService:(NSNetService *)sender didUpdateTXTRecordData:(NSData *)data

我不知道该怎么做。我想我遗漏了一些东西,但我不知道它是在 Mac 应用程序还是 iPhone 应用程序中。我想我首先需要以某种方式从 iPhone 应用程序连接到 Mac 应用程序,然后在 Mac 应用程序中添加一些监听连接的东西。

0 投票
2 回答
2858 浏览

iphone - 如何从 NetService 获取 IP 地址

当我得到一个 NetService 对象时,我尝试这样做:</p>

关于委托方法:</p>

谢谢。