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 不同於...