问题标签 [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 投票
2 回答
6402 浏览

macos - Mac:如何查看正在运行的网络服务列表?

我正在编写一个需要与 Mac 上正在运行的网络服务连接的应用程序。

问题是,我不知道服务叫什么,甚至不知道它使用什么端口。有没有办法在我的 Mac 上浏览所有正在运行的网络服务?

更多信息:

  • 我正在连接一个 MIDI 网络会话(在“音频 MIDI 设置”下找到,存在于所有 OSX 安装中)。我认为这是一项网络服务是否正确?

  • 我打算使用 NSNetServiceBrowser 来定位所有运行此服务的本地计算机。(这是最好的方法吗?)

非常感谢任何帮助 - 谢谢!

0 投票
1 回答
887 浏览

cocoa - NSNetService Bonjour 模仿 iPhoto

我正在尝试模仿 iPhoto 共享,并且已经使用 iPhoto 服务名称“_dpap._tcp.”发布服务。iPhoto 看到我的虚假“分享”,但它是灰色的。我正在查看网络流量以查看 iPhoto 是否正在寻找其他东西来启用它(使其成为非灰色),但似乎没有任何东西让我相信它真的是一个 bonjour 设置——我当我发布我的服务时我失踪了。

替代文字

关于 iPhoto 可能正在寻找/需要启用它的任何想法?您认为这是 bonjour 设置还是 iPhoto 特有的设置?

0 投票
1 回答
448 浏览

iphone - 如何确定与 iPhone 的连接是蓝牙还是 W​​iFi?

我正在使用两个 iphone 之间的 bonjour netservice 创建连接。

我连接使用

但我不知道如何判断结果连接是否通过蓝牙。有没有办法确定IP地址......应该这样做。

我认为遵守 Apple 的人机界面指南很重要,因为如果通过 WiFi 进行连接,我有时需要更新状态栏中的网络活动指示器,但如果我在蓝牙中使用该指示器,它看起来可能会产生误导联系。(指示灯在 wifi 连接旁边,而不是蓝牙连接旁边)。

谢谢

0 投票
2 回答
7307 浏览

iphone - 使用 NSNetService 类与 Windows 机器上共享的文件夹建立 SMB tcp ip 连接

我一直在尝试找出一种使用 iPhone 访问我的 Windows 共享文件夹的方法。所需的功能是我正在构建的更大企业应用程序的一部分。这里有人已经问过类似的问题但没有运气 - iOS 是否支持通过 SMB 进行文件操作?

现在,我找到了名为“ SimpleNetworkStreams ”的苹果开发者教程,它通过将 NSNetService 实例的类型设置为协议来使用 NSNetService 通过 tcp 使用 x-SNSUpload 协议x-SNSUpload._tcp

他们是这样做的——

因此,如果我只是在我的 macbook 上替换_x-SNSUpload._tcp_smb._tcp运行 SMB 服务器。我运行以下命令集在我的 macbook 上启动 SMB

然后我可以将我 iPhone 中的图片传输到我的 macbook 的根目录。我希望对 Windows 机器上的共享文件夹做同样的事情。

共享文件夹的名称是“测试共享”。我已经在我的 Windows 机器中明确共享了我的“测试共享”文件夹,并且所有人都可以完全控制。代码的完整细节放在下面(更新后)

如果我在浏览器上直接输入“smb:\\10.212.19.121”,我就可以访问我的共享文件夹。它会打开 finder 应用程序,并让我选择挂载“临时共享”文件夹。


更新 -从上面取出的大量冗余文本以及关于 SimpleNetworkStreams 如何工作以及我进行了调整的更好的细节放在下面。

代码取自 - SimpleNetworkStreams -

  1. 打开我们要发送的文件的 NSInputStream 类型的流
  1. 正如苹果文档所说

“您可以直接创建一个 NSNetService 对象(如果您知道确切的主机和端口信息),也可以使用 NSNetServiceBrowser 对象来浏览服务。”

为托管 SMB 服务器的服务器实例化一个 NSNetService 对象

将 NSOutputStream 类型的输出流对象获取到 self.networkStream 中。

然后 NSOutputStream 委托捕获 NSStreamEventHasSpaceAvailable 我们在输入文件中缓冲的位置,然后将该缓冲区写入我们的 NSOutputStream 对象,即 networkStream

0 投票
1 回答
3171 浏览

objective-c - 使用 NSNetService 连接到服务器但失败 - 自动套接字断开连接?

新的更简单版本的问题:

我正在尝试使用 Objective-C 客户端连接到 Bonjour 设备并与之通信,但在解析服务(服务器)时遇到了问题。最初我试图做一个更复杂的例子,但我发现即使指定了端口/ip,基本的套接字连接也不起作用。

我使用 cocoaAsyncSocket 库拥有最简单的代码:

这是我要连接的服务器(Python 脚本):

服务器永远不会看到传入连接。在客户端,错误变量具有值或某些东西——没有我所期望的。请帮忙?

OLD(更复杂的版本,使用相同的服务器):

我的调试输出基本上说服务已解决......然后我立即断开套接字。同时我的服务器坐在那里,没有看到传入的连接。

当我获得初始连接并打印出服务的名称时,我已经使用调试器进行了检查 - 然后它挂起,直到我按下继续,然后我立即断开套接字???

我对 Objective-C 和事件驱动编程非常陌生,所以也许我处理错了什么?我很感激任何建议!

客户端(调试器)输出:

服务器输出:

客户端代码(ClientController.m,基本上来自http://www.macresearch.org/cocoa-scientists-part-xxix-message):

0 投票
1 回答
1678 浏览

iphone - 如何停止在 wifi 网络中搜索新设备的过程?

在我的 wifi 网络代码中,我正在使用NSNetServiceBrowser委托searchForServicesOfType它将开始在 domainString 指示的域中搜索指定类型的服务

[ self.netServiceBrowser searchForServicesOfType:类型 inDomain:domain]

我的案例类型是网络标识符(字符串:“ _tcp_wifi ”),域是“本地”(字符串)。

对于每个发现的服务,一个 -netServiceBrowser:foundService:moreComing: 消息被发送到 NSNetServiceBrowser 实例的委托。

- (void)netServiceBrowser:(NSNetServiceBrowser *)netServiceBrowser didFindService:(NSNetService *)service moreComing:(BOOL)moreComing { }

上面的委托将为发现的每个服务触发。

searchForServicesOfType委托将始终搜索新设备。但是我需要使用计时器在 2 分钟后停止搜索新设备的过程。是否可以这样做。是否有任何 NSNetServiceBrowser 委托来执行此操作?如果是的话,谁能告诉我这样做的好方法。

0 投票
1 回答
152 浏览

iphone - 对于每次发布,我怎样才能使我的设备名称独一无二?

我使用相同的域和名称发布我的 netService 对象一次。另一台设备发现我的服务为myService

但是我再次使用相同的域和名称再次发布我的 netService 对象。另一个设备会将我的设计检测为myService(1)

代码:

对于每次发布,我怎样才能使我的设备名称独一无二?

0 投票
1 回答
493 浏览

iphone - 我们如何从 NSNetService 类中删除已发布的服务?

如何从 NSNetService 类中删除已发布的服务?

任何人都可以告诉我这样做吗?

或需要始终让我的设备名称唯一(如果我完成了多次发布)

0 投票
3 回答
4119 浏览

objective-c - NSNetService 工作正常,但无法获取主机名,解决导致错误

我正在使用 Bonjour 和 NSNetService 从我的 iPhone 发布服务器。这一切都按预期工作,我可以浏览我正在服务的页面等。但是,在 iPhone 上,我想显示主机名(即 URL,如“myDevice.local”),这样也可以输入在浏览器中手动添加地址(对于缺少 bonjour 发现服务的客户端很有用)。我的理解是调用方法 [myNetService hostName] 应该给我那个地址。但是,此调用始终返回 nil。我在某个论坛上读到我首先应该解析服务,但是 [myNetService resolve] 和 [myNetService resolveWithTimeout:10] 都调用了委托方法

有错误

这显然意味着它已经解决了。同样,这一切都是在我可以使用该服务时发生的。我还可以获得端口、域和服务类型。唯一的另一个奇怪的事情是调用 [myNetService 地址] 返回一个空数组。

我正在使用 SDK 3.1.3。有人知道我做错了什么吗?

0 投票
2 回答
1977 浏览

iphone - 解析 NSNetService 时出错

我正在 iPhone 上创建一个通过 wi-fi 玩的棋盘游戏。

当设备 A 邀请设备 B 播放时(尝试解析 B 发布的 NSNetService),设备 B 可以接受或拒绝。

如果 B 拒绝,A 会收到通知,一切都很好。但是,如果 A 稍后再次尝试邀请 B,我的netService:didNotResolve:委托方法中会出现以下错误。

NSNetServicesErrorCode = -72003 NSNetServicesErrorDomain = 10

错误 -72003 表示NSNetServicesActivityInProgress ...我怎样才能让一个玩家多次“邀请”其他玩家?

我正在使用 AsynchSocket 库,谢谢!