在Mac OS X上进行进程间通信的最佳方法

时间:2010-05-17 02:22:02

标签: cocoa networking sockets ipc nsconnection

我正在寻找在Mac上构建一个带有后端守护程序进程的Cocoa应用程序(可能只是一个大多数无头的Cocoa应用程序),以及在本地运行的0个或更多“客户端”应用程序(尽管可能)我也想支持远程客户端;远程客户端只能是其他Mac或iPhone OS设备。)

正在传播的数据相当简单,大多数只是文本和命令(我猜不管怎么说都可以表示为文本),也许是偶尔的小文件(可能是图像)。

我已经看了几个方法,但是我不确定哪个方法对于手头的任务来说“最好”。我考虑过的事情:

  • 读取和写入文件(...是),非常基本但不太可扩展。
  • 纯套接字(我没有套接字的经验,但我似乎认为我可以使用它们在本地和网络上发送数据。虽然在Cocoa中做所有事情似乎很麻烦
  • 分布式对象:对于像这样的任务而言似乎相当不优雅
  • NSConnection:我无法弄清楚这个班级甚至做了什么,但我已经在一些IPC搜索结果中读到了它

我确信有些东西我不见了,但我很惊讶地发现这个话题缺乏资源。

3 个答案:

答案 0 :(得分:15)

答案 1 :(得分:13)

免责声明:分布式对象为not available on iPhone


为什么你发现distributed objects不优雅?他们听起来很不错:

  • 基本类型和Objective-C类的透明编组
  • 无论客户是本地还是远程都没关系
  • 基于Cocoa的应用程序没有太多额外工作

文档可能会让它听起来像实际上更多的工作,但你基本上要做的就是干净地使用协议并导出或分别连接到服务器根对象。
其余应该在给定场景中为您自动幕后发生。

答案 2 :(得分:6)

我们正在使用ThoMoNetworking,它运行正常,设置速度很快。基本上它允许您在本地网络中发送符合NSCoding的对象,但是当客户端和服务器在同一台机器上时当然也可以工作。作为基础课程的包装,它负责配对,重新连接等。