系统运输
注意事项:
Linux(2.4.22 )限制:
可发送的最大消息字节数为8192
队列的最大容量字节数16384
队列最大队列容量16
key_tFtok(char*path,int id )的使用说明:
ftok会创建一个密钥,其中内核中的队列是外部的ID号。 其他进程不知道内核中的队列ID号,因为消息队列位于内核中,只有作者和内核知道队列位于内核中的ID号。 因此,关联和关联外键
id(1-255 ) )。
返回内核消息队列的ID号
其他注意事项请看unix的高级环境编程。 或者,如果有几个问题需要讨论的话,请回到我这里。
server.c
#include&; #039; msg.h&; #039; # include stdio.h # include string.h # include stdlib.hint main ( int argc,char**argv ) intqueid while(1) {fputs inttype; scanf(&; #039; %d&; #039;type ); switch(type ) caseMYTYPE_ONE ) msg_send ) queid,&; #039; MYTYPE_ONE&; #039;mytype_one ); 黑; } case my type _ two:{ msg _ send ( queid,&; #039; MYTYPE_TWO&; #039;mytype_two ); 黑; }default:{fputs(&; #039; 输入类型错误。 \\\\n )、stdout ),然后重新输入。 黑; }}fputs(&; #039; 输入: q结束,其他继续\\\\n )、stdout ); if(getchar(==(\\& ); #039; q\\&; #039; ) { fputs } & amp; #039; 结束成功了! \\\\n&; #039;stdout; 黑; }else{fputs(&; #039; 继续发送消息\\\\n&; #039; stdout ); (//退出需要删除Del_que(queid )而不发送奖励队列; 返回0; }
client.c
#include&; #039; msg.h&; #039; # include stdio.h # include string.h # include stdlib.hint main ( int argc,char**argv ) intqueid while(1) {fputs inttype; scanf(&; #039; %d&; #039;type ); switch(type ) caseMYTYPE_ONE ) msg_rec ) queid,mytype_one ); 黑; }caseMYTYPE_TWO:{msg_rec(queid,mytype_two ); 黑; }default:{fputs(&; #039; 输入类型错误。 \\\\n )、stdout ),然后重新输入。 黑; }}fputs(&; #039; 输入: q结束,其他继续\\\\n )、stdout ); if(getchar(==(\\& ); #039; q\\&; #039; ) { fputs } & amp; #039; 结束成功了! \\\\n&; #039;stdout; 黑; }else{fputs(&; #039; 继续发送消息\\\\n&; #039; stdout ); //从队列中删除Del_que(queid ); 返回0; }
msg.c
# includesys/types.h # includesys/IPC.h # include stdio.h # include stdlib.h # includesys/IPC.h # includesys/mes if(-1==key ) Perror(Ftok\\\n ); exit(1; //队列intqueid=要创建msgget ( key,IPC_CREAT|0666 )的if(-1==queid ) perror(msgget\\\n ); exit(1; }returnqueid; //队列voidmsg_send(key_tkey,char*text,longmsgtype )//初始化内容structMSGtmp; memset(tmp,sizeof ) structmsg ),0 ); tmp.mytype=msgtype; srcpy(tmp.mytext,text ); //发送消息if ( msgsnd ( key,tmp,TEXTSIZE,0 ) ) perror & amp; #039; msgsnd\\\n&; #039; ); exit(1; }//从消息队列中检索消息,并使用voidmsg_rec(key_tkey,longmsgtype ) {structMSGtmp; if(-1==msgrcv(key,tmp,TEXTSIZE,msgtype,MSG_NOERROR ) ) perror ) msgrcv(\\n&; #039; ); exit(1; } printf ( receive content:% s\\ n & amp; #039;tmp.mytext ); //删除队列,并一起使用voiddel_que(key_tkey ) if ) msgctl ) key,IPC_RMID,NULL ) ) perror ) msgnd ) }
msg.h
# ifndef msg _ h # definemsg _ h # includesys/types.h # define text size 100 # definearrysize2# define my type _ one1# define (; intopen_msg(char*,int ); voidmsg_send(key_t,char*,long ); #endif//endMSG_H
附件: http://down.51cto.com/data/2362206
详情请访问云服务器、域名注册、虚拟主机的问题,请访问西部数码代理商官方网站: www.chenqinet.cn