【问题标题】:msgtype member in Message Queues消息队列中的 msgtype 成员
【发布时间】:2014-06-09 05:00:41
【问题描述】:

我的服务器和客户端结构如下:

 struct server
{
  long msgtype;
  char find[20];

};
struct client
{ 
    long msgtype;
    char text[200];
};

我使用 msgsnd() 函数将消息从客户端程序发送到公共消息队列。 我很难理解这句话

If msgtyp is greater than zero, the first message of **type** msgtyp is received.

type 是否意味着当我们使用 msgrcv() 函数时,收到的消息将是 long 类型(在这种情况下)。如果是这样,怎么可能收到一个很长的结构?

【问题讨论】:

    标签: c ipc


    【解决方案1】:

    [msgrcv() 函数的] 参数 msgp 指向一个用户定义的缓冲区,该缓冲区必须首先包含一个“long int”类型的字段,该字段将指定消息的类型,然后是一个将保存的数据部分消息的数据字节。

    (“long”类型与“long int”类型相同)

    “msgtype”字段用于标识消息结构。 'msgtype' 字段后跟用户定义的数据负载。

    在您的示例中,您将分配一个数字来表示服务器结构(可能是“1”),并分配另一个数字来表示客户端结构(可能是“2”)。

    当一个'server'(或'1')类型的消息被发送时,一个端点会被另一个端点接收;以及由 msgtype ('1') 中的值标识的“服务器”消息结构。

    【讨论】:

      猜你喜欢
      • 2021-05-23
      • 2016-08-21
      • 1970-01-01
      • 2020-11-27
      • 2016-06-02
      • 2012-01-21
      • 2015-12-16
      • 2016-02-27
      • 2014-01-11
      相关资源
      最近更新 更多