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...