在 QNX 中,如何管理服务器和客户端之间的 IPC 连接?



最初我把这个问题的标题定为"在QNX中,_PULSE_CODE_DISCONNECT和_PULSE_CODE_COIDDEATH有什么区别? 但是,我认为我的问题比这更广泛一些。

我已经使用 QNX Neutrino OS 6.6.0 实施了 IPC 服务器。 从本质上讲,我有一个服务器,可以查询配置信息,例如设置和内容。 它还接受对设置的更改。 它允许客户端订阅它。 这意味着一旦订阅,如果设置发生更改,服务器将通知其他客户端。

目前为止,一切都好。 到目前为止,这些东西对我来说是有意义的。 我不清楚的是处理客户端断开连接或进程死亡的适当方法。

现在,我的服务器上收到_PULSE_CODE_DISCONNECT。 这到底是什么意思? 我没有收到_PULSE_CODE_COIDDEATH,这是我所期望的。

我认为我特别对QNX中的coid和scoid有点困惑。

接收_PULSE_CODE_COIDDEATH取决于您在创建通道时设置的标志。要获得该脉冲,您需要设置通道标志_NTO_CHF_COID_DISCONNECT

_PULSE_CODE_DISCONNECT与信道标志_NTO_CHF_DISCONNECT有关,当所有连接分离时接收脉冲。

请参阅ChannelCreate的文档: http://www.qnx.com/developers/docs/6.6.0_anm11_wf10/index.html#com.qnx.doc.neutrino.lib_ref/topic/c/channelcreate.html

coid 是当您通过ConnectAttach连接到通道时提供给您的连接 ID。 SCOID 是一个服务器连接 ID(内部分配(,您可以在您正在谈论的脉搏中获得它。在消息接收和回复上下文中,内核将回复路由到客户端。

另外,我的理解是,如果你得到_PULSE_CODE_COIDDEATH你需要通过调用ConnectDetach(scoid)scoid来自脉冲的位置来清理。

相关内容

  • 没有找到相关文章

最新更新