我的第一个问题是如何让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:
被调用。然而,这不会发生。
谢谢你的帮助!