訊息佇列程式設計收發資料

2021-10-09 16:42:14 字數 1557 閱讀 3312

1.server.c

#include

#include

#include

#include

#include

// 用於建立乙個唯一的key

// 訊息結構

struct msg_form ;

int main()

// 列印key值

printf("message queue - server key is: %d.\n", key);

// 建立訊息佇列

if ((msqid = msgget(key, ipc_creat|0777)) == -1)

// 列印訊息佇列id及程序id

printf("my msqid is: %d.\n", msqid);

// 迴圈讀取訊息msgrcv(msqid, &msg, sizeof(msg.mtext), 880, 0);// 返回型別為888的第乙個訊息

printf(「server: receive msg.mtext is: %s.\n」, msg.mtext);

printf(「server: receive msg.mtype is: %ld.\n」, msg.mtype);

struct msg_form sendbuf = ;

msgsnd(msqid, &sendbuf,strlen(sendbuf.mtext), 0);

msgctl(msqid,ipc_rmid,null);

return 0;

}

2.client.c

#include

#include

#include

#include

// 用於建立乙個唯一的key

// 訊息結構

struct msg_form ;

int main()

// 列印key值

printf("message queue - client key is: %d.\n", key);

// 開啟訊息佇列

if ((msqid = msgget(key, ipc_creat|0777)) == -1)

// 列印訊息佇列id及程序id

printf("my msqid is: %d.\n", msqid);

// 新增訊息,型別為888struct msg_form sendbuf = ;

msgsnd(msqid,&sendbuf,strlen(sendbuf.mtext),0);

// 讀取型別為777的訊息

msgrcv(msqid, &msg, sizeof(msg.mtext), 989, 0);

printf("client: receive msg.mtext is: %s.\n", msg.mtext);

printf("client: receive msg.mtype is: %ld.\n", msg.mtype);

msgctl(msqid,ipc_rmid,null);

return 0;

訊息佇列程式設計

訊息佇列 就是乙個訊息的鍊錶。而一條訊息則可看作乙個記錄,具有特定的格式。程序可以向中按照一定的規則新增新訊息 另一些程序則可以從訊息佇列中讀走訊息 傳送訊息佇列 include include include include struct msgt int msg type char str 25...

訊息佇列的通訊原理及建立訊息佇列程式設計收發資料

1.訊息佇列,是訊息的鏈結表,存放在核心中,乙個訊息佇列由乙個識別符號 即佇列id 來標識。2.特點 3.訊息佇列相關api 1 int msgget key t key,int flag 功能 開啟或建立訊息佇列。返回值 成功返回佇列id,失敗返回 1 引數說明 2 int msgsnd int ...

Linux 訊息佇列程式設計

訊息佇列 訊號量以及共享記憶體被稱作 xsi ipc,它們均來自system v的ipc功能,因此具有許多共性。鍵和識別符號 核心中的每一種ipc結構 比如訊號量 訊息佇列 共享記憶體 都用乙個非負整數的識別符號加以標示 如共享記憶體的shmid 訊號量的semid 以及訊息佇列的msgid 不同於...