四種程序間通訊方式簡介與比較

2021-04-13 07:58:37 字數 1533 閱讀 9051

createpipe(&m_hread, &m_hwrite, &sa, 0)建立匿名管道

createprocess("..//child//debug//child.exe", null, null, null,true,

0, null, null, &sui, &pi)通過startupinfo結構體sui將父程序匿名管道讀寫控制代碼傳遞給子程序 sui.hstdinput = m_hread;

sui.hstdoutput = m_hwrite;

同樣,通過readfile和writefile從管道中讀取、寫入資料

命名管道

伺服器端:

hpipe=createnamedpipe(".//pipe//mypipe",

0,1,1024,1024,0,null); //建立命名管道

handle hevent;

hevent=createevent(null,true,false,null);

ovlap.hevent=hevent;

connectnamedpipe(hpipe,&ovlap)//等待客戶端連線

waitforsingleobject(hevent,infinite)//等待事件發生

然後通過readfile和writefile從管道中讀取資料

客戶機端:

waitnamedpipe(".//pipe//mypipe",nmpwait_wait_forever) //連線管道

hpipe=createfile(".//pipe//mypipe",generic_read | generic_write,

0,null,open_existing,file_attribute_normal,null);//開啟已經存在的管道

然後通過readfile和writefile從管道中讀取資料

油槽的伺服器端只能接收資料,客戶端只能傳送資料,由於其基於廣播通訊體系,所以可以利用油槽,編碼多個伺服器端和乙個客戶端來簡單實現乙個一對多的網路系統。

伺服器端:

handle hmailslot = createmailslot(".//mailslot//mymailslot", 0,

mailslot_wait_forever, null);  //建立油槽

readfile(hmailslot, buf, 100, &dwread, null)  //讀取資料

客戶端:

hmailslot = createfile(".//mailslot//mymailslot", generic_write, file_share_read,

null, open_existing, file_attribute_normal, null);  //開啟油槽

writefile(hmailslot, buf, strlen(buf)+1, &dwwrite, null)  //寫入資料

剪貼簿和匿名管道只能實現同一臺機器上兩個程序間的通訊,不能實現跨網路的通訊;而命名管道和油槽則兩者都可以實現,對於油槽還可以實現一對多的通訊,而命名管道只能是乙個點對點的通訊。但是油槽傳送資訊較少,要在424位元組以下。

Java 程序間通訊的四種方式

所謂程序通訊,就是不同程序之間進行一些 接觸 這種接觸有簡單,也有複雜。機制不同,複雜度也不一樣。通訊是乙個廣義上的意義,不僅僅指傳遞一些massege。他們的使用方法是基本相同的,所以只要掌握了一種的使用方法,然後記住其他的使用方法就可以了。1 訊號 在我學習的內容中,主要接觸了訊號來實現同步的機...

程序間通訊各方式間比較

管道 pipe 管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。有名管道 named pipe 有名管道也是半雙工的通訊方式,但是它允許無親緣關係程序間的通訊。訊號量 semophore 訊號量是乙個計數器,可以用來控制多個程序對...

Mysql的四種通訊方式

老方式,先練一下審美 tcp ip套接字連線方式是mysql在任何平台都提供的一種連線方式,也是網路中使用最多的一種方式。那麼他們是怎麼連線上的嘞?假設我有兩台伺服器分別部署mysql資料庫客戶端 192.168.0.1 和mysql資料庫例項 192.168.0.2 兩者需要進行通訊,需要建立tc...