訊息佇列通訊實驗報告總結

2021-09-29 14:44:30 字數 2418 閱讀 1705

1、了解什麼是訊息、訊息佇列

2、掌握訊息傳送的機理

作用:建立訊息佇列

原型:int msgget(key_t key, int msgflag)

引數:key:鍵值 ipc_private

msgflag:許可權

返回值:成功:訊息佇列id

出錯:-1

標頭檔案: #include

#include

#include

錯誤:

作用:寫資料到訊息佇列

原型:int msgsnd(int msgid, const void *msggp, size_t msgsize, int msg***)

引數:msgid訊息佇列識別符號

msggp 訊息結構

例如下:

struct msgtype

msgsize,位元組數

msg***,識別符號分類如下

0:當訊息佇列滿時,msgsnd將會阻塞,直到訊息能寫進訊息佇列

ipc_nowait:當訊息佇列已滿的時候,msgsnd函式不等待立即返回

ipc_noerror:若傳送的訊息大於size位元組,則把該訊息截斷,截斷部分將被丟棄,且不通知傳送程序。

標頭檔案: #include

#include

#include

錯誤:

作用:從訊息佇列中讀資料

原型:ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, intmsg***)

引數:msqid:訊息佇列識別符號

msgp:指向訊息緩衝區的指標,此位置用來暫時儲存傳送和接收的訊息,是乙個使用者可定義的通用結構,形態如上方的msggp

msgsz:訊息的大小。

msgtyp:訊息型別

msgtyp等於0 則返回佇列的最早的乙個訊息

msgtyp大於0,則返回其型別為mtype的第乙個訊息

msgtyp小於0,則返回其型別小於或等於mtype引數的絕對值的最小的乙個訊息

錯誤:

作用:控制訊息佇列

原型:int msggctl(intmsgid, int cmd, struct msgid_ds *buf)

引數:msgid 訊息佇列id

cmd 命令引數

ipc_stat 讀取訊息佇列的資料結構, ipc_set設定訊息佇列資料結構msgid_ds中的ipc操作許可權、 ipc_rmid從系統核心彙總刪除訊息佇列

返回值: 成功 0

出錯-1

標頭檔案: #include

#include

#include

錯誤:將server程式設定為能夠併發處理多個客戶的程式(參考下圖的程式結構),伺服器無限迴圈,ctrl+c結束,設計捕捉訊號,訊號處理中刪除訊息佇列,伺服器收到客戶機的訊息後發給不同客戶機不同的應答訊息(內容自定)。

//子程序

}else

//父程序

else

if(pid==0)

}else

}}有兩個client,**一致

#include

#include

#include

#include

#include

#define msgkey 75

struct msgform

;int msgid;

intmain()

執行結果

管道通訊實驗報告

實驗目的 1.熟悉管道的概念 2.掌握利用管道實現程序間通訊的方法 實驗內容 編寫一段程式,實現程序的管道通訊 1.使用系統呼叫 pipe 建立一條管道線。兩個子程序p1和p2分別向管道各寫一句話 child 1 is sending a message chile 2 is sending a m...

APUE學習之 程序通訊實現訊息佇列

1.實現 實現兩個程式之間通訊,乙個負責接收資料,並根據訊息的不同型別輸出不同的描述資訊。另乙個負責接收資料,傳送了從標準輸入的三種不同訊息。乙個標頭檔案定義兩個程式都需要的定義,最後用makefile檔案編譯得到兩個輸出檔案。標頭檔案定義 define tokpath tmp path.c def...

計算機網路與通訊實驗報告 HTTP協議分析

四 總結 1.熟悉osi七層協議體系結構 2.了解各層完成的工作 3.掌握http協議的工作過程及特點。獲得任意 啟動 wireshark 捕獲資料報。輸入過濾表示式,顯示本機與目的 之間互動的tcp和http資料報,過濾表示式如下 通過本次實驗,我了解了http協議的工作方式,利用wireshar...