實驗五 訊息的傳送與接收

2021-05-23 20:23:16 字數 1274 閱讀 3959

實驗五  訊息的傳送與接收

實驗目的

1、了解什麼是訊息

2、熟悉訊息傳送的機理

實驗內容

訊息的建立、傳送和接收。使用系統呼叫msgget( ),msgsnd( ),msgrev( ),及msgctl( )編制一長度為1k的訊息傳送和接收的程式。

void client()

exit(0);

}main( )

2、server.c

#include

#include

#include

#define msgkey 75

struct  msgform

msg;

int  msgqid;

void server( )

while(msg.mtype!=1);

msgctl(msgqid,ipc_rmid,0);  /*刪除訊息佇列,歸還資源*/

exit(0);

}main( )

四、程式說明

1、為了便於操作和觀察結果,編制二個程式client.c和server.c,分別用於訊息的傳送與接收。

2、server建立乙個 key 為75的訊息佇列,等待其它程序發來的訊息。當遇到型別為1的訊息,則作為結束訊號,取消該佇列,並退出server。server每接收到乙個訊息後顯示一句「(server)received。」

3、client使用 key為75的訊息佇列,先後傳送型別從10到1的訊息,然後退出。最後乙個訊息,即是 server端需要的結束訊號。client 每傳送一條訊息後顯示一句 「(client)sent」。

4、注意:   二個程式分別編輯、編譯為client與server。執行:

./server&

ipcs  -q

./client。

五、執行結果

從理想的結果來說,應當是每當client傳送乙個訊息後,server接收該訊息,client再傳送下一條。也就是說「(client)sent」和 「(server)received」的字樣應該在螢幕上交替出現。實際的結果大多是,先由client傳送了兩條訊息,然後server接收一條訊息。此後client 、server交替傳送和接收訊息。最後server一次接收兩條訊息。client 和server 分別傳送和接收了10條訊息,與預期設想一致。

六、思考

message的傳送和控制並不保證完全同步,當乙個程式不在啟用狀態的時候,它完全可能繼續睡眠,造成了上面的現象,在多次send message 後才recieve message。這一點有助於理解訊息傳送的實現機理。

實驗五 訊息的傳送與接收

實驗五 訊息的傳送與接收 實驗目的 1 了解什麼是訊息 2 熟悉訊息傳送的機理 實驗內容 訊息的建立 傳送和接收。使用系統呼叫msgget msgsnd msgrev 及msgctl 編制一長度為 k的訊息傳送和接收的程式。void client exit 0 main 2 server.c inc...

訊息佇列的傳送與接收

訊息佇列的傳送與接收 include include include include include 不包含此標頭檔案,會出現 警告 隱式宣告與內建函式strcpy不相容 struct msg buf int main int argc,char argv msgbuf.mtype getpid s...

IBM MQ Linux傳送與接收訊息測試

之前本人的部落格寫了ibm mq環境搭建的過程 參考 本篇部落格記錄一下完成安裝之後,在linux環境下進行簡單的訊息傳送與接收。1 建立佇列管理器 2 在該佇列管理器內建立本地佇列 3 向本地佇列放入測試訊息 4 驗證測試訊息是否能被接收 在linux中使用ibm mq自帶的mqsc實現以上步驟 ...