В QNX, как управлять соединениями IPC между сервером и клиентом?

Первоначально я назвал вопрос как «В QNX, в чем разница между _PULSE_CODE_DISCONNECT и _PULSE_CODE_COIDDEATH?». Тем не менее, я думаю, что мой вопрос немного шире.

Я реализовал IPC-сервер, используя QNX Neutrino OS 6.6.0. По сути, у меня есть сервер, который запрашивает информацию о конфигурации, такую ​​как настройки и прочее. Он также принимает изменения в настройках. Это позволяет клиентам подписаться на него. Это означает, что после подписки, если изменение произойдет с параметром, сервер уведомит других клиентов.

Все идет нормально. Этот материал до этого момента имеет смысл для меня. Что мне неясно, так это подходящий способ отсоединения клиента или умирания процесса.

Прямо сейчас я получаю _PULSE_CODE_DISCONNECT на моем сервере. Что именно это означает? Я не получаю _PULSE_CODE_COIDDEATH, чего я и ожидал.

Я думаю, в частности, я немного запутался в том, что такое CID против Scoid в QNX.

0

Решение

получающий _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,
scoid — это идентификатор соединения с сервером (присваивается внутри), который вы получаете в импульсе, о котором говорите. В контексте получения и ответа сообщения ядро ​​направляет ответ клиенту.

Кроме того, я понимаю, что если вы получите _PULSE_CODE_COIDDEATH вам нужно очистить, позвонив ConnectDetach(scoid) где скойд от пульса.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]