欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

unixXSIIPC-消息隊(duì)列例程-創(chuàng)新互聯(lián)

注意事項(xiàng):

成都創(chuàng)新互聯(lián)是專業(yè)的祥云網(wǎng)站建設(shè)公司,祥云接單;提供成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行祥云網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

linux(2.4.22)限制:

  • 可發(fā)送最長(zhǎng)消息字節(jié)數(shù)為8192
  • 隊(duì)列大容量字節(jié)數(shù) 16384
  • 隊(duì)列大隊(duì)列容量數(shù) 16

key_t ftok(char* path,int id)使用說(shuō)明:

  • ftok創(chuàng)建一個(gè)鍵,是內(nèi)核中的隊(duì)列在外部的ID號(hào),由于消息隊(duì)列處于內(nèi)核中,只有創(chuàng)建者和內(nèi)核知道隊(duì)列在內(nèi)核里面的ID號(hào),這樣其它的進(jìn)程就無(wú)法知道內(nèi)核里面隊(duì)列ID號(hào),所以要關(guān)聯(lián)一個(gè)外部鍵進(jìn)行關(guān)聯(lián)
  • id (1-255)
  • 返回內(nèi)核消息隊(duì)列的ID號(hào)

其它的注意就查看一下unix高級(jí)環(huán)境編程吧,或者有些問(wèn)題需要討論就回我吧!!


 server.c

  1. #include "msg.h"
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5. int main(int argc, char** argv)
  6. {
  7.       int queid = open_msg("/root",100);
  8.       while(1)
  9.       {
  10.             fputs("請(qǐng)輸入要發(fā)送的類型:1 or 2\n", stdout);
  11.             int type;
  12.             scanf("%d",&type);
  13.             switch(type)
  14.             {
  15.                   case MYTYPE_ONE:
  16.                        {
  17.                               msg_send(queid,"MYTYPE_ONE", MYTYPE_ONE);
  18.                               break;
  19.                        }
  20.                   case MYTYPE_TWO:
  21.                        {
  22.                               msg_send(queid,"MYTYPE_TWO", MYTYPE_TWO);
  23.                               break;
  24.                        }
  25.                   default:
  26.                         {
  27.                               fputs("輸入類型錯(cuò)誤,請(qǐng)重新輸入\n",stdout);
  28.                               break;
  29.                         }
  30.             }
  31.             fputs("輸入:q 為退出,其它表示繼續(xù)\n",stdout);
  32.             if(getchar() == 'q')
  33.             {
  34.                   fputs("退出成功!\n",stdout);
  35.                   break;
  36.             }
  37.             else
  38.             {
  39.                   fputs("繼續(xù)發(fā)送消息\n",stdout);
  40.             }
  41.       }
  42. //不發(fā)送退出需要獎(jiǎng)隊(duì)列移除
  43.       del_que(queid);
  44.       return 0;
  45. }


client.c

  1. #include "msg.h"
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5. int main(int argc, char** argv)
  6. {
  7.       int queid = open_msg("/root",100);
  8.       while(1)
  9.       {
  10.             fputs("請(qǐng)接收要發(fā)送的類型:1 or 2\n", stdout);
  11.             int type;
  12.             scanf("%d",&type);
  13.             switch(type)
  14.             {
  15.                   case MYTYPE_ONE:
  16.                        {
  17.                               msg_rec(queid,MYTYPE_ONE);
  18.                               break;
  19.                        }
  20.                   case MYTYPE_TWO:
  21.                        {
  22.                               msg_rec(queid,MYTYPE_TWO);
  23.                               break;
  24.                        }
  25.                   default:
  26.                         {
  27.                               fputs("輸入類型錯(cuò)誤,請(qǐng)重新輸入\n",stdout);
  28.                               break;
  29.                         }
  30.             }
  31.             fputs("輸入:q 為退出,其它表示繼續(xù)\n",stdout);
  32.             if(getchar() == 'q')
  33.             {
  34.                   fputs("退出成功!\n",stdout);
  35.                   break;
  36.             }
  37.             else
  38.             {
  39.                   fputs("繼續(xù)發(fā)送消息\n",stdout);
  40.             }
  41.       }
  42. //隊(duì)列移除
  43.       del_que(queid);
  44.       return 0;
  45. }


msg.c

  1. #include <sys/types.h>
  2. #include <sys/ipc.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <sys/ipc.h>
  6. #include <sys/msg.h>
  7. #include<string.h>
  8. #include"msg.h"
  9. //如果存在隊(duì)列則打開,沒(méi)有則創(chuàng)建
  10. int open_msg(char* path, int id)
  11. {
  12.       //獲取IPC對(duì)象的一個(gè)鍵
  13.       key_t key = ftok(path, id);
  14.       if(-1 == key)
  15.       {
  16.             perror("ftok\n");
  17.             exit(1);
  18.       }
  19.       //創(chuàng)建一個(gè)隊(duì)列
  20.       int queid = msgget(key, IPC_CREAT|0666);
  21.       if(-1 == queid)
  22.       {
  23.             perror("msgget\n");
  24.             exit(1);
  25.       }
  26.       return queid;
  27. }
  28. //發(fā)送消息到隊(duì)列
  29. void msg_send(key_t key,char* text, long msgtype)
  30. {
  31.       //初始化內(nèi)容
  32.       struct MSG tmp;
  33.       memset(&tmp,sizeof(struct MSG),0);
  34.       tmp.mytype = msgtype;
  35.       strcpy(tmp.mytext,text);
  36.       //發(fā)送消息
  37.       if(msgsnd(key, &tmp, TEXTSIZE, 0))
  38.       {
  39.             perror("msgsnd\n");
  40.             exit(1);
  41.       }
  42. }
  43. //從消息隊(duì)列獲取消息并顯示
  44. void msg_rec(key_t key,long msgtype)
  45. {
  46.       struct MSG tmp;
  47.       if(-1 == msgrcv(key, &tmp, TEXTSIZE, msgtype, MSG_NOERROR))
  48.       {
  49.             perror("msgrcv\n");
  50.             exit(1);
  51.       }
  52.       printf("receive content: %s\n",tmp.mytext);
  53. }
  54. //刪除隊(duì)列,即使隊(duì)列里面還有消息也一起刪除
  55. void del_que(key_t key)
  56. {
  57.       if(msgctl(key,IPC_RMID,NULL))
  58.       {
  59.             perror("msgsnd\n");
  60.             exit(1);
  61.       }
  62. }


msg.h

  1. #ifndef MSG_H
  2. #define MSG_H
  3. #include <sys/types.h>
  4. #define TEXTSIZE 100
  5. #define ARRYSIZE 2
  6. #define MYTYPE_ONE 1
  7. #define MYTYPE_TWO 2
  8. struct MSG
  9. {
  10.       long mytype;
  11.       char mytext[TEXTSIZE];
  12. };
  13. int open_msg(char*,int);
  14. void msg_send(key_t,char*,long);
  15. #endif // end MSG_H

附件:http://down.51cto.com/data/2362206

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站標(biāo)題:unixXSIIPC-消息隊(duì)列例程-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://chinadenli.net/article20/hpico.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)網(wǎng)站策劃虛擬主機(jī)App設(shè)計(jì)網(wǎng)站維護(hù)品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司