基于Linux的消息队列及多线程编程实现的聊天室(一)

本程序主要是针对Linux IPC通信初学者对Linux下消息队列通信机制,多线程编程,字符串处理,链表操作,信号简单处理等基本概念的练习。

原理:

  消息队列是System V支持一种IPC机制,通过类似链表的操作向一个FIFO里通过msgsnd发送用户自定义数据,进程可以通过msgrcv来接收指定类似mtype的数据,从而实现进程间通信。

 

主要实现了以下功能:

 

  1. > 通过多个终端登录,不同终端上登录用户实现私聊
  2. > 群聊
  3. > 查看在线用户
  4. > 简单注册(没有实现用户保存,类似于公共聊天室)

下面是几种操作的处理流程分析。详细代码分析见下篇博文:

          http://blog.csdn.net/mr_raptor/article/details/8484822

代码下载:

          http://download.csdn.net/detail/mr_raptor/4976808

 

 >> 服务器通过特定的类型mtype:1000,从消息队列上接收数据。

 >> 当前登录用户将随机产生(random())的一个随机ID号作为申请用户ID,使用如下协议向服务器(mtype=1000)发送申请消息。

@msg.h

协议数据定义如下,共有4个段,以“:”作为分隔符。

 

// CMD:FROM:TIME:DATA 
#define     DATA_LEN    4
#define     OFT_CMD     0
#define     OFT_FRM     1
#define     OFT_TIM     2
#define     OFT_DAT     3
#define     DATA_TOK    ":"

 

CMD:FROM:TIME:DATA

  CMD:表示执行的操作

  FROM:表示来自哪个终端

  TIME:申请时间

  DATA:用户发送数据

  >> 服务器在接收到用

  • 29
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值