本程序主要是针对Linux IPC通信初学者对Linux下消息队列通信机制,多线程编程,字符串处理,链表操作,信号简单处理等基本概念的练习。
原理:
消息队列是System V支持一种IPC机制,通过类似链表的操作向一个FIFO里通过msgsnd发送用户自定义数据,进程可以通过msgrcv来接收指定类似mtype的数据,从而实现进程间通信。
主要实现了以下功能:
- > 通过多个终端登录,不同终端上登录用户实现私聊
- > 群聊
- > 查看在线用户
- > 简单注册(没有实现用户保存,类似于公共聊天室)
下面是几种操作的处理流程分析。详细代码分析见下篇博文:
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