今天将之前的一个服务器和多个客户端的例子改成给去往服务器的所有客户请求使用一个队列,给每个客户使用一个队列接收去往各个客户的服务器应答。
下面给出这样的设计:
服务器的队列有一个对客户来说众所周知的键,但是各个客户以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 == -1){
cout << "msgget error." <<

本文介绍了如何将一个服务器与多个客户端的交互模式改造成每个客户端都有自己的消息队列来接收服务器响应。服务器使用一个公共队列接收请求,而客户端通过IPC_PRIVATE创建私有队列并传递给服务器,以便服务器能定向回应。服务器程序以并发模式运行,对每个客户端fork一次。
最低0.47元/天 解锁文章
690

被折叠的 条评论
为什么被折叠?



