Ios 如何调用didAcceptConnectionWithInputStream:outputStream:?

Ios 如何调用didAcceptConnectionWithInputStream:outputStream:?,ios,networking,bonjour,connection,nsnetservice,Ios,Networking,Bonjour,Connection,Nsnetservice,我的第一个问题是如何在NSNetServiceDelegate中调用didAcceptConnectionWithInputStream:outputStream:回调 后续问题:尽管我从未收到一个回调,说连接已被接受(通过didAcceptConnectionWithInputStream:outputStream:),但我仍然可以在客户端和服务器之间建立连接吗 我理解,在传入NSNetServiceListenForConnections选项时调用publishWithOptions,应该会

我的第一个问题是如何在
NSNetServiceDelegate
中调用
didAcceptConnectionWithInputStream:outputStream:
回调

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

我理解,在传入
NSNetServiceListenForConnections
选项时调用
publishWithOptions
,应该会导致调用
NetServiceDelegate
回调(
didAcceptConnectionWithInputStream:outputStream:
)。但是,不会调用该回调

以下是我要发布的步骤:

  • 使用创建
    NSNetService

    self.netService=[[NSNetService alloc]initWithDomain:@“” 类型:\ u serviceType 名称:(_name==nil)?@“”:_name 端口:0]

  • 以默认模式在当前运行循环中计划服务

  • 将委托设置为我的服务器包装器对象
  • 调用
    publishWithOptions:NSNetServiceListenForConnections
  • 以下是我浏览服务所采取的步骤:

  • 创建一个
    NSNetServiceBrowser
    ,并将其委托给我的客户机包装器对象
  • 为与NSNetService相同的服务类型和域调用
    searchForServicesOfType
  • 在UI的
    UITableView
    中列出服务,以允许用户选择服务
  • 当用户选择服务时,将该服务的委托设置为my client对象,并对该服务调用
    getInputStream:outputSteam:
  • 在getInputStream:outputSteam:返回成功后,我希望调用
    didAcceptConnectionWithInputStream:outputStream:
    。然而,这并没有发生

  • 谢谢你的帮助

    问题是必须从接受连接的一端调用
    didAcceptConnectionWithInputStream:outputStream:

    一旦服务可用,您就可以调用get-the-streams

    [服务getInputStream:&IsStream outputStream:&ostream]

    一旦在接收请求的一方发生这种情况,委托方法

    - (void)netService:(NSNetService *)sender didAcceptConnectionWithInputStream:(NSInputStream *)inputStream outputStream:(NSOutputStream *)outputStream 
    

    将被称为

    这都是惰性初始化的一部分

    调用
    getInputStream:outputStream:
    将返回两个非常好的NSStream,可以随时使用。比如说,你想写一些数据?首先,打开写流


    netService:didAcceptConnectionWithInputStream:outputStream:
    被调用。

    根据我的经验,不是在客户端调用
    getInputStream:outputStream:
    的行为导致服务器调用
    didAcceptConnectionWithInputStream:outputStream:


    在客户端上,在调用
    getInputStream:outputStream:
    之后,您的客户端需要调用
    [inputStream open]
    [outputStream open]
    ,然后才能调用
    didAcceptConnectionWithInputStream:outputStream:

    您找到了吗?是的,我知道必须从接受连接的一端调用
    didAcceptConnectionWithInputStream:outputStream:
    。在我的例子中,服务器也充当客户机,但始终没有调用回调方法,
    didAcceptConnectionWithInputStream:outputStream: