如何在客户端断开连接时获取NSNetService通知?

时间:2014-09-05 09:20:21

标签: objective-c cocoa nsnetservice

我是Objective-C / Cocoa的新手,我正在尝试编写一个bonjour服务器 - 客户端应用程序。 因为我没有太多经验,如果您的回复也可以包含有关如何操作的解释,我将不胜感激,而不仅仅是代码。

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

问题是,我希望服务器拥有所有连接客户端的列表。 我知道客户端的NSNetServiceBrowserDelegate有一个方法,只要与bonjour服务的连接结束就被撤销, 但我无法找到一个与NSNetServiceDelegate相同的方法,我可以在服务器端使用,以便在客户端断开连接时运行相应的代码。

1 个答案:

答案 0 :(得分:0)

查看Stream Programming Guide。 基本上,您将使用NSStream(或其子类),您需要创建并为您的流分配委托。 流委托应该处理一个方法 - stream:handleEvent: 该方法是一个回调,它将为您提供以下NSStreamStatus指示之一(typedefed NSUInteger)

typedef enum {
   NSStreamStatusNotOpen = 0,
   NSStreamStatusOpening = 1,
   NSStreamStatusOpen = 2,
   NSStreamStatusReading = 3,
   NSStreamStatusWriting = 4,
   NSStreamStatusAtEnd = 5,
   NSStreamStatusClosed = 6,
   NSStreamStatusError = 7
};

在你的委托方法的实现中,你基本上创建了一个switch-case语句,它可以完成你为响应变化而需要做的任何事情。