实验原理:
本实验用消息队列设计一个简易的双人聊天程序(一个服务器,两个客户端)。消息队列重点在于消息类型的匹配,客户端和服务端的“通信协议”的设计。思想如下:
服务器端:接受客户端发来的任何消息,并根据器消息类型,转发给对应的客户端。同时,检测是否有退出标记,有则给所有的客户端发送退出标记,等待1s后,确定客户端都退出,删除消息队列,释放空间,并退出。
客户端:A和B。A给B发送信息,先发给服务器,由服务器根据自定义协议转发该消息给B。同时B也可以通过服务器给A发消息
服务器:
#include<stdio.h>
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/msg.h>
#include<string.h>
#define KEY_MSG 0x101
#define MSGSIZE 64
typedef struct
{
long mtype;
char mtext[MSGSIZE];
}msgbuf;
#define LEN sizeof(msgbuf)-sizeof(long)
void main()
{
int msgid;
msgbuf buf1,buf2;
msgid=msgget(KEY_MSG,IPC_CREAT|0666);
while(1)
{
msgrcv(ms