Linux精简消息队列实现聊天,linux下的消息队列聊天实现

主要是在linux下的消息队列进行聊天的实现,如有错误的地方请联系本人进行探讨。

在linux系统下

消息队列的聊天室实现的过程:

1.消息队列

消息队列是消息的链接表,存放在内核中并由消息队列标识符标识。我们将称消息队列为

“队列”,其标识符为“队列I D”。

m s g g e t用于创建一个新队列或打开一个现存的队列。

m s g s n d用于将新消息添加到队列尾端。每个消息包含一个正长整型类型字段,一个非负

长度以及实际

数据字节(对应于长度),所有这些都在将消息添加到队列时,传送给m s g s n d。

m s g r c v用于从队列中取消息。

我们并不一定要以先进先出次序取消息,也可以按消息的类型字段取消息。

每个队列都有一个m s q i d d s结构与其相关。此结构规定了队列的当前状态。如图(1-1)

1-258-png_6_0_0_135_461_622_236_892.979_1262.879-681-0-7-681.jpg

图(1-1)msqid_ds结构

调用的第一个函数通常是m s g g e t,其功能是打开一个现存队列或创建一个新队列。

#include

#include

#include

int msgget(key_t key, int flag) ;

返回:若成功则为消息队列I D,若出错则为- 1

调用m s g s n d将数据放到消息队列上。

#include

#include

#include

int msgsnd(int msqid, const void * pt r, size_tnbytes, int flag) ;

返回:若成功则为0,若出错则为- 1

正如前面提及的,每个消息都由三部分组成,它们是:正长整型类型字段、非负长度

(nbytes)以及实际数据字节(对应于长度)。消息总是放在队列尾端。ptr指向一个长整型

数,它包含了正整型消息类型,在其后立即跟随了消息数据。(若nbytes是0,则无消息数

据。)若发送的最长消息是5 1 2字节,则可定义下列结构:

struct mymesg {

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值