版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验6消息队列通信实验目的1、了解什么是消息、消息队列2、掌握消息传送的机理实验内容1、消息的创建、发送和接受。使用系统调用msgget(),msgsnd(),msgrev(),及msget1()编制一长度为1k的消息发送和接受的程序。Msgqid.c#incIude<stdio.h>#inckide<sys/types.h>#include<sys/msg.h>#inckide<sys/ipc.h>#defineMSGKEY75/*定义关键词MEGKEY*/structmsgform/*消息结构*/{1ongm(ype;charmtext[1030];/*文本长度*/}msg;intmsgqid,i;voidCLIENTO{inti;msgqid=msgget(MSGKEY,0777);for(i=10;i>=1;i-)msg.mtype=i;printf("(c1ient)sent'n");msgsnd(msgqid,&msg,1024,0);/*发送消息msg入msgid消息队列*/)exit(0);)voidSERVER(){msgqid=msgget(MSGKEY,0777|IPC_CREAT);/*由关键字获得消息队列*/do|msgrcv(msgqid,&msg,1030,0,0);/*从msgqid队列接受消息msg*/printf("(server)received\n");}while(msg.mtype1=1);/*消息类型为1时,释放队列*/msgctl(msgqid,IPC_RMID,0);exit(0);)main(){while((i=fork())==-l);if(!i)SERVER();while((i=fork())=-l);if(!i)CLIENT();wait(0);实验结果:FileEditViewTerminalTabsHelpmsgqid.c:32:warning:incompatibleimplicitdeclarationofbuilt-infunction'exptif[root(aiocalhost〜]#./msgqid(client)sent(client)sent(client)sent(client)sent(client)sent(client)sent(cllent)sent(cllent)sent(client)sent(client)sent(server)received(server)received(server)received(server)received(server)received(server)received(server)received(server)received(server)received(server)received[root(aiocalhost-]#口2、选做实验:模拟从c/s通信客户端client功能:1)显示服务功能菜单teryourchoice:Savenoney2.Takemoney2)接受用户键入的功能号进行选择;3)将用户键入的功能号作为一条消息发送到消息队列,然后结束服务端功能:1)从消息队列接受c1ient发送的一条消息;2)根据消息作如下解决:若消息为“1”,创建子进程1,子进程1加载服务模块save,该模块显示以下信息:Yourmoneywassavcd!若消息为“2”,创建子进程2,子进程2加载服务模块take,该模块显示以下信息:P1easetakeyourmoney!3)等待子进程终止后,server消息对列结束。注意:l)save和take要事先编译连接好,放在同一目录下;2)先运营客户端进程,再运营服务端进程。1、client.cinclude<sys/types.h>inelude<sys/msg.h>inc1ude<sys/ipc,h>include<stdio.h>#include<std1ib.h>#defineMSGKEY75structmsgform{longmtype;charmtext[1000];}msg;intmsgqid;voidclient()inti;msgqid=msgget(MSGKEY,0777);/*打开75#消息队列*/for(i=20;i>=l;i-)msg.mtype=i;printf("(client)sent%d\n',,i);sleep(3);msgsnd(msgqid.&msg,1024,0);/*发送消息*/)exit(0);)main()(client();)server.cinclude<sys/types.h>incIude<sys/msg.h>inc1ude<sys/ipc.h>inc1udc<stdio.h>include<std1ib.h>defineMSGKEY75structmsgfbrm{1ongmtype;charmtex([10001;}msg;intmsgqid;voidservcr()msgqid=msgge((MSGKEY,0777|IPC.CREAT);/*创建75#消息队列号msgrcv(msgqid,&msg,1030Q0);/*接受消息*/printf("(server)received%1d\n”,msg.mtype);s1eep(3);}whilc(msg.mtypc!=l);msgctl(msgqidJPC_RMID,0);/火删除消息队列,归还资源*/exit(0);Imain(){server();
实验结果:qroot@localhost:~1FileEditViewTerminalTabsHelp[root@localhostgcc-oclientclient.c[root@local.host〜J#./client(client)sent20(client)sent19(client)sent18(client)sent17(client)sent16(client)sent15(client)sent14(client)sent13(client)sent12(client)sent11(client)sent10(client)sent9(client)sent8(client)sent7(client)sent6(client)sent5(client)sent4(client)sent3(client)sent2(client)sent1[root@localhost〜]#口root@localhost:~FileEditViewTerminalTabsHelp[root(aiocalhostgcc-oserverserver.c[root@localhost-]#./server(server)received20(server)received19(server)received18(server)received17(server)received16(server)received15(server)received14(server)received13(server)received12(server)received11(server)rec
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026校招:中国电建题库及答案
- 2026校招:质检员笔试题及答案
- 2026校招:小米面试题及答案
- 2026校招:上汽集团面试题及答案
- 2026年天津交通职业学院单招职业技能考试题库含答案详解(培优a卷)
- 2026年安徽审计职业学院单招职业技能测试题库及答案详解(有一套)
- 2026校招:上海华谊集团试题及答案
- 2026年安徽国防科技职业学院单招职业技能考试题库及1套参考答案详解
- 2026年天津商务职业学院单招职业技能考试题库附参考答案详解(a卷)
- 2026年天府新区航空旅游职业学院单招职业倾向性测试题库附参考答案详解(预热题)
- 《中国四大地理区域划分》复习学案
- 防欺凌家校联动共育
- 实验室计量器器具校准操作规程
- 土工布铺设工程监理实施细则
- 汽车贴膜类招商加盟计划书
- JCT2166-2013 夹层玻璃用聚乙烯醇缩丁醛(PVB)胶片
- 建筑材料说课公开课一等奖市赛课获奖课件
- 充电桩合作框架协议
- 新一代大学英语提高篇视听说教程2答案
- 再生水厂退水管线出水口及钢模围堰施工方案
- 二十世纪西方文论课件
评论
0/150
提交评论