今天将之前的一个服务器和多个客户端的例子改成给去往服务器的所有客户请求使用一个队列,给每个客户使用一个队列接收去往各个客户的服务器应答。
下面给出这样的设计:
服务器的队列有一个对客户来说众所周知的键,但是各个客户以IPC_PRIVATE键创建各自的队列,这里并未随请求传递本进程id,而是由每个客户把自己的私用队列的标识符传递给服务器,服务器把自己的应答发送到由客户指出的队列中。我们还以并发服务器模型编写这个服务器程序,给每个客户fork一次。。。
首先给出客户端的代码:
#include"uitil.h"
int main(int argc,char*argv[])
{
int readid,writeid;
//打开服务器创建的MQ_KEY1
writeid = msgget(MQ_KEY1,0);
if(writeid == -1){
cout << "msgget error." << endl;
exit(1);
}
//客户端创建自己的消息队列
readid = msgget(IPC_PRIVATE,SVMSG_MODE | IPC_CREAT);
if(readid ==