我有一个可可应用程序,在这个应用程序中,我想使用UNIX域套接字与一个系统范围的守护进程进行通信。
在第一步中,我的客户端将连接到守护进程,然后侦听来自守护进程的日志语句。
我找到的示例是来自苹果的CFLocalServer,它使用CFSockets在两个命令行实用程序之间进行通信。我能够很好地设置代码的守护进程部分,因为我可以自由地决定在我的守护进程([[NSRunLoop currentLoop] run]或CFRunLoopRun())中调用哪个函数。然而,我对客户有疑问,因为客户是可可应用程序。
在代码示例中,客户端首先创建它们,连接它们,并将它们作为源添加到当前的CFRunLoop中进行侦听操作,然后调用CFRunLoopRun();,直到CFRunLoopStop(CFRunLoopGetCurrent());取消为止。
,我的问题是:可以在一个由Objective可可应用程序创建的串行调度队列的块内完成所有这些工作,而不会干扰应用程序主线程中的NSRunLoop吗?
发布于 2013-04-30 23:23:07
是的,您可以这样做,尽管您可能只想将套接字附加到主运行循环并让它正常运行(即,不要调用CFRunLoopRun(),因为它已经在运行)。
如果您的需求很复杂,我还将查看GCDAsyncSocket,它是所有此类工作的一个非常好的包装器。它目前不支持unix域套接字,但是可以使用添加它的jdiehl氏socketUN分支。
https://stackoverflow.com/questions/16306807
复制相似问题