如何从服务器端发送消息队列以显示在客户端上?

时间:2015-03-03 22:28:01

标签: c client-server posix message-queue

do {
    printf("+++ ");
    fflush(stdout);

    memset(buffer, 0, MAX_SIZE);
    fgets(buffer, MAX_SIZE, stdin);

    buffer[strlen(buffer) - 1] = 0;
    CHECK(0 <= mq_send(mq, buffer, MAX_SIZE, 0));

} while (strncmp(buffer, CMD_EXIT, strlen(CMD_EXIT)));

这是我为客户端发送到服务器端的内容。我可以与服务器端做类似的事情吗?

1 个答案:

答案 0 :(得分:1)

对于通过POSIX消息队列进行通信的两个进程(在同一台机器上运行),每个进程打开队列(其中&#34;&#34;队列由提供给{{1}的双方同意的名称标识})。任何发布到队列的消息都可以通过调用mq_open()由打开它的任何进程检索。消息按优先级顺序接收,并且在具有相同优先级的消息中最早到最年轻。

将双向通信协议建立在单个消息队列上会很棘手,但您可以使用两个,每个方向一个。尽管如此,这并不是该功能的预期用例。您可能会考虑一对FIFO是否会像一对消息队列一样为您提供服务。