用消息队列实现Client和Server间的通信.docxVIP

  • 18
  • 0
  • 约5.55千字
  • 约 8页
  • 2017-02-11 发布于北京
  • 举报

用消息队列实现Client和Server间的通信.docx

用消息队列实现Client和Server间的通信

用消息队列实现Client和Server间的通信在UNIX系统的内部结构中,含有消息机构,即所有的消息都放在内核中,并且它们都有一个相应的消息队列号。消息机构允许进程发送一个消息到任意其它进程,从而实现系统中进程间的通信。一、UNIX系统中的消息机构消息是一个格式化的可变长度的信息单元。它有如下属性:(1)长整数类型 (2)消息的数据长度 (3)数据。由于消息的长度是可变的,故将消息分为消息首部和消息数据两部分。在消息首部中,记录着消息的类型和大小,指向消息数据区的指针,消息队列的链接指针等。每个消息队列有一个称为 key的名称,如同用户文件描述符一样,每个消息队列还有一个消息队列描述符。此外,在一个系统中,可能有若干个消息队列,所有消息队列的头标组成一个数组。图1 示出了消息和消息队列的数据结构。图1 消息和消息队列的数据结构1. 建立或返回消息队列描述符进程可用系统调用megget来建立或返回消息队列的描述符。该系统调用的语法格式为:int megget(key,msgflg)key_t key;int megflg;其中,key是消息队列的名字;msgflg是用户设置的标志。如果IPC_CREAT表示系统无以key命名的消息队列,则建立消息队列标识符;若已存在,则返回消息队列描述符msgid。 对于系统调用,核心将搜索消息队列头标数组,确定是否有指定关键字的消息队列。若无,核

文档评论(0)

1亿VIP精品文档

相关文档