问题标签 [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.
ios - NSNetService 发布,但 didAcceptConnectionWithInputStream... 从未被调用
我一直在尝试在 iOS 上制作一个简单的应用程序,它将接收一条消息,然后根据该消息执行一个操作(目前我只想通过 显示它NSLog
)。我可以连接到服务,但服务似乎从来没有收到任何东西。这是我的 .h 文件:
和我的.m:
这通过以下方式调用:
当我使用Bonjour Browser时,我可以看到该服务,当我使用我自己的 an 实现NSNetServiceBrowser
或 Bill Dudney 的示例(博客文章,代码)时,它似乎已连接(即我自己的实现通过 接收NSStreamEventHasSpaceAvailable
和NSStreamEventOpenCompleted
事件stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode
) . 但是,以上方法均未在服务器上调用。
我还是 iOS 新手,所以我希望这只是一些可以轻松修复的愚蠢错误。
c# - 在 MonoTouch 中使用 Bonjour NSNetService 来自 NSData 的 IPAddress?
我在 iOS 上使用 Xamarin + MonoTouch 来浏览网络上的 Web 服务器,然后我可以从中下载文件。
传递给解析事件处理程序的 NSNetService 包含地址作为 NSData。我找不到将 NSData 转换为实际 IP 地址的好方法,然后我可以从中构建 URL,即 http:// < IPAddress > /folder/file.htm
这是我的 NSNetService.AddressResolved 事件处理程序:
在解析事件中从 NSNetService 获取服务 IP 地址的正确方法是什么?
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)
但是我无法获得地址(通过)NSNetServiceListenForConnections
NSUInteger
&
ios - didAcceptConnectionWithInputStream:outputStream: 是如何被调用的?
我的第一个问题是如何让didAcceptConnectionWithInputStream:outputStream:
回调NSNetServiceDelegate
被调用?
后续问题:我仍然可以在客户端和服务器之间建立连接,尽管我从来没有收到回调说连接已被接受(通过didAcceptConnectionWithInputStream:outputStream:
)?
我知道publishWithOptions
在传递NSNetServiceListenForConnections
选项时调用 , 应该会导致NetServiceDelegate
调用回调 ( didAcceptConnectionWithInputStream:outputStream:
) 。但是,该回调没有被调用。
以下是我正在采取的发布步骤:
创建
NSNetService
与self.netService = [[NSNetService alloc] initWithDomain:@"" type:_serviceType name:(_name == nil) ? @"" : _name 端口:0];
在当前运行循环中调度服务,默认模式
- 将委托设置为我的服务器包装对象
- 称呼
publishWithOptions:NSNetServiceListenForConnections
以下是我浏览服务的步骤:
- 创建一个
NSNetServiceBrowser
,并将其委托设置为我的客户端包装对象 - 调用
searchForServicesOfType
相同的服务类型和域NSNetService
- 在 UI中列出服务
UITableView
,以允许用户选择服务 - 当用户选择服务时,将服务的委托设置为我的客户端对象,然后调用
getInputStream:outputSteam:
服务 - 在 getInputStream:outputSteam: 返回成功后,我希望
didAcceptConnectionWithInputStream:outputStream:
被调用。然而,这不会发生。
谢谢你的帮助!
ios - 具有不同 IP 地址的对等连接
我想连接具有不同 IP 地址的设备。
例如:
设备 A 使用移动网络,设备 B 也使用移动网络。那么是否可以连接它们?如果是,如何,如果没有,为什么?
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
swift - 在 Swift 应用程序上使用 NSNetService 和 NSNetServiceBrowser
我想制作一个能够发现并连接到本地网络上的对等点的应用程序,所以我决定使用 bonjour 框架快速实现它。
但是,我无法使用 Swift 让 Bonjour 工作,我不知道为什么。这是我用来测试此服务的代码:
代表是胶水代码,它简单地打印对控制台的每个调用。
这是此示例代码的输出:
如果我使用Bonjour browser,我可以看到该服务已正确发布。然而,两个代表中的回调都没有被调用,除了**WillPublish
那些:-(
经过激烈的调试(并阅读了stackoverflow),我不知道为什么它不起作用。有任何想法吗 ?
(我使用的是 Mac OS X 10.9.3 和 xcode 6.0 beta build 6A215l)
objective-c - 当客户端断开连接时如何获取 NSNetService 通知?
我对 Objective-C / Cocoa 有点陌生,我正在尝试编写一个 bonjour 服务器-客户端应用程序。因为我没有太多经验,如果您的回复还可以包括有关如何执行此操作的说明,而不仅仅是代码,我将不胜感激。
我设法使用服务器的netService:didAcceptConnectionWithInputStream:outputStream
方法在服务器和客户端之间建立连接和输入输出流。
问题是,我希望服务器拥有所有已连接客户端的列表。我知道客户端的 NSNetServiceBrowserDelegate 有一个方法,每当与 bonjour 服务的连接结束时,该方法就会被撤销,但是我找不到NSNetServiceDelegate
可以在服务器端使用的相等方法来运行适当的代码客户端断开连接。
ios - 在 iOS 7 上通过 NSNetService 连接到 BLE 设备并发送/读取数据
我有一个 iPhone 应用程序,它通过NSNetService
. 现在我想添加对蓝牙的支持。所以我想通过蓝牙(BLE)发现并连接到设备,连接时我想通过发送/接收数据NSNetService
,所以我重用现有代码......
这在 iOS7+ 上可行吗?任何示例/提示将不胜感激。
ios - 连接后立即断开与服务器的连接
我使用 GCDAsyncsocket 库编写了一个单例类,以使用 Bonjour 与具有相同服务的任何其他设备建立连接。
在一个设备上,我使用它的方法“ startPublishing ”使其成为主机(服务器),从另一个设备(客户端)上的应用程序我调用“ StartBrowsing ”来找出网络中的可用设备。当用户选择该网络中的任何服务时,我正在调用方法“ initConnectionWithService ”,该方法通过解析要连接的 NetService 地址来启动连接流。
BonjourUtilClass.h
BonjourUtilClass.m
但是,在执行上述事情时,发生了非常意想不到的事情,充当客户端的设备正在didConnectedToHost中获得回调,并且立即,另一个回调即将到来,即在didDisconnected
客户端设备上的日志
服务器设备上的日志