【问题标题】:IPC msgrcv - receiving only two specific types of messagesIPC msgrcv - 只接收两种特定类型的消息
【发布时间】:2013-02-20 10:36:12
【问题描述】:

我有一个问题。

我有一个进程,假设它是一个客户端,还有一个称为服务器的进程。客户端和服务器通过同一个队列相互通信。假设客户端向服务器发送消息(请求),因此服务器对其进行处理并应将消息发送回客户端确认或失败。假设确认有long type = 1500101,失败有long type = 1500102。

是否有可能(在 C 中使用 msgrcv)只等待这两种类型的消息(客户端)? 如果不是,那么实现这种机制的最佳方法是什么?

【问题讨论】:

    标签: c linux ipc msgrcv


    【解决方案1】:

    不,您无法接收多种消息类型。它要么是全部,要么只是一种类型,或者是除了单一类型之外的全部。

    你可以做的是用IPC_NOWAIT标志调用msgrcv两次,每种类型一次。

    【讨论】:

      【解决方案2】:

      客户端和服务器通过同一个队列相互通信。

      我建议客户端和服务器有单独的单独队列。然后服务器可以接收到它的队列中的所有消息(使用 msgtype 为 0)。它可以根据收到的消息的 msgtype 进行切换并执行必要的操作。

      【讨论】:

        猜你喜欢
        • 2018-08-19
        • 2011-07-15
        • 1970-01-01
        • 2012-07-27
        • 1970-01-01
        • 1970-01-01
        • 2011-06-30
        • 2015-06-26
        • 2020-10-31
        相关资源
        最近更新 更多