版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验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年大学英语四六级作文写作练习题集
- 2026年高级人才管理领导力与团队建设试题
- 城市绿化提升工程方案
- 2026年旅游法规指南CTF专业笔试模拟题
- 2026年能源经济学与政策研究试题集
- 创伤急救四大技术
- 2025年计划员岗位考试题及答案
- SY-T5051-2024钻具稳定器-石油天然气行业标准
- 服装废品管理办法
- 春节工地留守人员安全教育
- 部编版一年级语文下册无纸化闯关测试 课件
- 医院后勤采购集中采购计划
- DB63∕T 2270-2024 公路建设项目智慧工地技术指南
- GA/T 2187-2024法庭科学整体分离痕迹检验规范
- 手术器械包装操作
- 电梯维保服务方案及措施
评论
0/150
提交评论