1

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

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

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

4

1 回答 1

0

检查流编程指南。基本上,您将使用 NSStream(或它的子类),并且您需要创建一个委托并将其分配给您的流。流委托应该处理一个方法——stream:handleEvent:该方法是一个回调,它将为您提供以下 NSStreamStatus 指示之一(类型定义的 NSUInteger)

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

在您的委托方法的实现中,您基本上创建了一个 switch-case 语句,该语句执行您需要执行的任何操作以响应更改。

于 2014-09-06T08:06:05.903 回答