问题标签 [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 回答
2289 浏览

ios - NSNetService 发布,但 didAcceptConnectionWithInputStream... 从未被调用

我一直在尝试在 iOS 上制作一个简单的应用程序,它将接收一条消息,然后根据该消息执行一个操作(目前我只想通过 显示它NSLog)。我可以连接到服务,但服务似乎从来没有收到任何东西。这是我的 .h 文件:

和我的.m:

这通过以下方式调用:

当我使用Bonjour Browser时,我可以看到该服务,当我使用我自己的 an 实现NSNetServiceBrowser或 Bill Dudney 的示例(博客文章代码)时,它似乎已连接(即我自己的实现通过 接收NSStreamEventHasSpaceAvailableNSStreamEventOpenCompleted事件stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode) . 但是,以上方法均未在服务器上调用。

我还是 iOS 新手,所以我希望这只是一些可以轻松修复的愚蠢错误。

0 投票
1 回答
817 浏览

c# - 在 MonoTouch 中使用 Bonjour NSNetService 来自 NSData 的 IPAddress?

我在 iOS 上使用 Xamarin + MonoTouch 来浏览网络上的 Web 服务器,然后我可以从中下载文件。

传递给解析事件处理程序的 NSNetService 包含地址作为 NSData。我找不到将 NSData 转换为实际 IP 地址的好方法,然后我可以从中构建 URL,即 http:// < IPAddress > /folder/file.htm

这是我的 NSNetService.AddressResolved 事件处理程序:

在解析事件中从 NSNetService 获取服务 IP 地址的正确方法是什么?

0 投票
1 回答
504 浏览

objective-c - NSNetService NSNetServiceListenForConnections 使用和检查可用性?

我正在创建一个使用 NSNetService 发布服务器的应用程序,并且我遇到了NSNetServiceListenForConnections可以在 OS X 10.9 中使用该publishWithOptions:方法的选项。这个新选项在Apple 提供的“ OS X 10.9 中的新增功能”页面中突出显示。但是,它指出If you send the NSNetServiceListenForConnections option flag in the options value passed to publishWithOptions:, OS X automatically handles all of the connection management for you,我看不出这是一种新行为吗?我目前只是调用该publish方法并等待ServerAcceptCallBack由该CFSocketCreate方法设置的 。我似乎没有让这更容易?

我正在关注CocoaEcho 示例中的一些 Apple 代码,它获取一个端口并打开一个CFSocket. 我知道你可以0作为方法的port参数传递initWithDomain: name: port:,但它选择了一个“随机”端口,我猜这不是 100% 安全的事情。我认为这NSNetServiceListenForConnections可能与此有关,但根据描述,它没有。

所以对于我的实际问题,毕竟漫无边际:

NSNetServiceListenForConnections选项实际上了什么,以及(为什么)我应该使用它?

附带问题:如果我应该使用它,我如何检查可用性?我被告知要使用,if (&NSNetServiceListenForConnections != NULL)但是我无法获得地址(通过)NSNetServiceListenForConnectionsNSUInteger&

0 投票
3 回答
755 浏览

ios - didAcceptConnectionWithInputStream:outputStream: 是如何被调用的?

我的第一个问题是如何让didAcceptConnectionWithInputStream:outputStream:回调NSNetServiceDelegate被调用?

后续问题:我仍然可以在客户端和服务器之间建立连接,尽管我从来没有收到回调说连接已被接受(通过didAcceptConnectionWithInputStream:outputStream:)?

我知道publishWithOptions在传递NSNetServiceListenForConnections选项时调用 , 应该会导致NetServiceDelegate调用回调 ( didAcceptConnectionWithInputStream:outputStream:) 。但是,该回调没有被调用。

以下是我正在采取的发布步骤:

  1. 创建NSNetService

    self.netService = [[NSNetService alloc] initWithDomain:@"" type:_serviceType name:(_name == nil) ? @"" : _name 端口:0];

  2. 在当前运行循环中调度服务,默认模式

  3. 将委托设置为我的服务器包装对象
  4. 称呼publishWithOptions:NSNetServiceListenForConnections

以下是我浏览服务的步骤:

  1. 创建一个NSNetServiceBrowser,并将其委托设置为我的客户端包装对象
  2. 调用searchForServicesOfType相同的服务类型和域NSNetService
  3. 在 UI中列出服务UITableView,以允许用户选择服务
  4. 当用户选择服务时,将服务的委托设置为我的客户端对象,然后调用getInputStream:outputSteam:服务
  5. 在 getInputStream:outputSteam: 返回成功后,我希望didAcceptConnectionWithInputStream:outputStream:被调用。然而,这不会发生。

谢谢你的帮助!

0 投票
1 回答
214 浏览

ios - 具有不同 IP 地址的对等连接

我想连接具有不同 IP 地址的设备。

例如:

设备 A 使用移动网络,设备 B 也使用移动网络。那么是否可以连接它们?如果是,如何,如果没有,为什么?

0 投票
1 回答
3716 浏览

ios - dyld:找不到符号:_OBJC_CLASS_$_NSNetService 错误

所以我有以下问题:

在我的 iPhone 5s 上的 iOS 8 上启动我的应用程序,我没有收到任何错误,但在我的 iPhone 3GS 上的 iOS 6.1.3 上启动我的应用程序,我收到此错误:

我导入了一个名为 Server 的类。该类使用 CFNetwork.framework,其中包含 NSNetService 类,该类从 iOS 2.0 开始可用。

使用 NSClassFromString(@"NSNetService") 并不是我真正喜欢的解决方案。我也不知道,为什么会出现这个错误,因为类 NSNetService 应该在 iOS 6 中可用。它可能是设备吗?

我搜索并发现,将框架设置为可选,将解决这个问题。但问题是,当我在 iOS 6 上运行应用程序时,我无法使用该框架。当我这样做时

我得到打印 NSNetService 为零。

是否可以在不崩溃且不将框架设置为可选的情况下启动应用程序

谢谢 iComputerfreak

0 投票
2 回答
9304 浏览

swift - 在 Swift 应用程序上使用 NSNetService 和 NSNetServiceBrowser

我想制作一个能够发现并连接到本地网络上的对等点的应用程序,所以我决定使用 bonjour 框架快速实现它。

但是,我无法使用 Swift 让 Bonjour 工作,我不知道为什么。这是我用来测试此服务的代码:

代表是胶水代码,它简单地打印对控制台的每个调用。

这是此示例代码的输出:

如果我使用Bonjour browser,我可以看到该服务已正确发布。然而,两个代表中的回调都没有被调用,除了**WillPublish那些:-(

经过激烈的调试(并阅读了stackoverflow),我不知道为什么它不起作用。有任何想法吗 ?

(我使用的是 Mac OS X 10.9.3 和 xcode 6.0 beta build 6A215l)

0 投票
1 回答
403 浏览

objective-c - 当客户端断开连接时如何获取 NSNetService 通知?

我对 Objective-C / Cocoa 有点陌生,我正在尝试编写一个 bonjour 服务器-客户端应用程序。因为我没有太多经验,如果您的回复还可以包括有关如何执行此操作的说明,而不仅仅是代码,我将不胜感激。

我设法使用服务器的netService:didAcceptConnectionWithInputStream:outputStream方法在服务器和客户端之间建立连接和输入输出流。

问题是,我希望服务器拥有所有已连接客户端的列表。我知道客户端的 NSNetServiceBrowserDelegate 有一个方法,每当与 bonjour 服务的连接结束时,该方法就会被撤销,但是我找不到NSNetServiceDelegate可以在服务器端使用的相等方法来运行适当的代码客户端断开连接。

0 投票
1 回答
319 浏览

ios - 在 iOS 7 上通过 NSNetService 连接到 BLE 设备并发送/读取数据

我有一个 iPhone 应用程序,它通过NSNetService. 现在我想添加对蓝牙的支持。所以我想通过蓝牙(BLE)发现并连接到设备,连接时我想通过发送/接收数据NSNetService,所以我重用现有代码......

这在 iOS7+ 上可行吗?任何示例/提示将不胜感激。

0 投票
1 回答
3052 浏览

ios - 连接后立即断开与服务器的连接

我使用 GCDAsyncsocket 库编写了一个单例类,以使用 Bonjour 与具有相同服务的任何其他设备建立连接。

在一个设备上,我使用它的方法“ startPublishing ”使其成为主机(服务器),从另一个设备(客户端)上的应用程序我调用“ StartBrowsing ”来找出网络中的可用设备。当用户选择该网络中的任何服务时,我正在调用方法“ initConnectionWithService ”,该方法通过解析要连接的 NetService 地址来启动连接流。

BonjourUtilClass.h

BonjourUtilClass.m

但是,在执行上述事情时,发生了非常意想不到的事情,充当客户端的设备正在didConnectedToHost中获得回调,并且立即,另一个回调即将到来,即在didDisconnected

客户端设备上的日志

服务器设备上的日志