消息队列通信实验报告_第1页
消息队列通信实验报告_第2页
消息队列通信实验报告_第3页
消息队列通信实验报告_第4页
消息队列通信实验报告_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

消息队列通信实验报告

实验6消息队列通信实验目的1、 了解什么是消息、消息队列2、 掌握消息传送的机理实验内容1、消息的创建、发送和接收。使用系统调用msgget(),msgsnd(),msgrev(),及msgctl()编制一长度为1k的消息发送和接收的程序。Msgqid・c#includevstdio・h>#includevsys/types・h>#includevsys/msg・h>/*定义关键/*消息结构#includevsys/ipc・h>#defineMSGKEY75/*定义关键/*消息结构*/{longmtypecharmtext[1030];/*文本长度*/}msg;intmsgqid,i;voidCLIENT(){inti;msgqid=msgget(MSGKEY,0777);

for(i=10;i>=1;i--){msg.mtype=i;printf("(client)sent\n");msgsnd(msgqid,&msg,1024,0);/*发送消息msg入msgid消息队列*/}exit(0);}voidSERVER。{msgqid=msgget(MSGKEY,0777IIPC_CREAT);/*由关键字获得消息队列*/domsgrcv(msgqid,&msg,1030,0,0);/*从msgqid队列接收消息msg*/printf("(server)received\n");}while(msg.mtype!=1); /*消息类型为1时,释放队列*/msgctl(msgqid,IPC_RMID,O);exit(0);}main(){while((i=fork())==-1);if(!i)SERVER。;while((i=fork())==-1);if(!i)CLIENT。;wait(0);wait(0);2、选做实验:模拟从c/s通信客户端client功能:1)显示服务功能菜单Enteryourchoice:SavenoneyTakemoney2) 接收用户键入的功能号进行选择;3) 将用户键入的功能号作为一条消息发送到消息队列,然后结束服务端功能:1) 从消息队列接收client发送的一条消息;2) 根据消息作如下处理:若消息为“1”创建子进程1,子进程1加载服务模块save,该模块显示以下信息:Yourmoneywassaved!若消息为“2”,创建子进程2,子进程2加载服务模块take,该模块显示

以下信息:Pleasetakeyourmoney!等待子进程终止后,server消息对列结束。注意:1)save和take要事先编译连接好,放在同一目录下;2)先运行客户端进程,再运行服务端进程。1、client・c#includevsys/types・h>#includevsys/msg・h>#includevsys/ipc.h>#includevstdio.h>#includevstdlib.h>#defineMSGKEY75structmsgform{longmtype;charmtext[1000];}msg;intmsgqid;voidclient(){/*打开/*打开75#消息队列*/for(i=20;i>=1;i--){msg・mtype=i;

/*发送/*发送msgsnd(msgqid,&msg,1024,0);消息*/}exit(O);}main(){client();}server.c#includevsys/types・h>#includevsys/msg.h>#includevsys/ipc.h>#includevstdio・h>#includevstdlib.h>#defineMSGKEY75structmsgform{longmtype;charmtext[1000];}msg;intmsgqid;voidserver(){msgqid=msgget(MSGKEY,0777IIPC_CREAT);/*创建75#消息队列*/do{msgrcv(msgqid,&msg,1O3O,O,0); /*接收消息*/printf("(server)received%ld\n",msg・mtype);sleep(3);}while(msg・mtype!=1);msgctl(msgqid,IPC_RMID,0);/*删除消息队列,归还资源*/exit(0);}main(){server();实验结果:FileEditViewJemninalTabsHelp[rootf&localhost-]#gcc-oclientclient.c[root^localhost~./client(ctiErit)5已仃t20(client)sent19(client)sent18(client)sent17(client)sent16(client)sent15(client)sent14(client)sent13(client)sent12(client)5ent11(client)5ent10(client)sent9(client)sent8(cLi亡nt亡仃t7(client)sent5(client)5ent5(client)5ent4(client)sent3(client)^ent2(cLi亡nt亡仃t1[rootfaiocalhostT#[]root^fccafhost:^-[root(31ocalhost-]■#gcc-oserverserver.c[root^loolhost-]#./server(server-)received20(server1)received19(server-)received18(server-)received17(server-)received16(server-)received15(server-)received14(server-)received13(server-)received12(server-)received11(server-)received10(server-)received9(serverlreceivedS(server')received7(server-)received6(s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论