只要客户端和服务器都是 OS X 应用程序并且都可以使用 Cocoa 框架在 Objective-C 中编写,我强烈建议您看看 Cocoa 中的分布式对象(DO) 技术。我不会尝试在这里给出分布式对象的教程,只是解释为什么它可能有用......
DO 为您处理异步网络详细信息(您的所有客户端更新都可能发生在单个线程上)。此外,与远程对象(客户端到服务器或反之亦然;一旦建立连接,DO 是双向的)通信的语义与进程内通信非常相似。换句话说,一旦你引用了远程对象(实际上是NSDistantObject连接另一端对象的代理),你的客户端代码就可以将消息发送到远程对象,就好像它是本地对象一样:
[remoteServer update:client];
来自客户或
[[remoteClientList objectAtIndex:i] update:server];
从服务器。在阅读了分布式对象编程指南后,我将把设置连接和获取 remoteServer 或 remoteClient 引用的详细信息留给您。
使用 DO 的缺点是你依赖于 Cocoa;编写使用分布式对象进行通信的非 Cocoa 客户端或服务器将非常困难。如果您可能希望拥有非 Cocoa 客户端或服务器实现,则不应使用 DO。在这种情况下,我会推荐一些简单的东西,有很多跨平台和语言支持。HTTP 上的 REST 风格的 API 是一个不错的选择。查看 Cocoa URL 加载系统文档以获取有关如何实现 HTTP 请求和响应的信息。查看 Apple 的CocoaHTTPServer示例代码或同名的 code.google.com 项目,了解有关在 Cocoa 代码中实现 HTTP 服务器的信息。
作为最后一个选项,如果您想实现自己的网络协议,可以查看 Cocoa Stream Programming Guide 。NSStream的子类将让您侦听网络套接字并处理对该套接字的异步读/写。很多人为此目的使用AsyncSocket 。它包装了(较低级别的)CFStream 和 CFSocket,使编写网络代码更加容易。