消息队列中的msgtype成员

时间:2014-04-24 04:35:40

标签: c ipc

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

 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.

类型是否意味着当我们使用msgrcv()函数时,收到的消息将是long类型(在本例中)。如果是这样,怎么可能长时间接收一个结构?

1 个答案:

答案 0 :(得分:0)

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

(类型'长'与类型相同' long int')

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

在您的示例中,您将指定一个数字来表示服务器结构(可能是' 1'),另一个数字代表客户端结构(可能是' 2')。

当出现类型为' server'的消息时(或' 1')由一个端点发送,它将被另一个端点接收;和服务器'消息结构由msgtype中的值标识(' 1')。