vc 中程序間的通訊

2021-04-08 14:32:11 字數 1870 閱讀 2734

程序通常被定義為乙個正在執行的程式的例項,它由兩個部分組成:

乙個是作業系統用來管理程序的核心物件。核心物件也是系統用來存放關於程序的統計資訊的地方

另乙個是位址空間,它包含所有的可執行模組或dll模組的**和資料。它還包含動態分配的空間。如執行緒堆疊和堆分配空間。每個程序被賦予它自己的虛擬位址空間,當程序中的乙個執行緒正在執行時,該執行緒可以訪問只屬於它的程序的記憶體。屬於其它程序的記憶體則是隱藏的,並不能被正在執行的執行緒訪問。

為了能在兩個程序之間進行通訊,由以下幾種方法可供參考:

1、剪貼簿clipboard: 在16位時代常使用的方式,cwnd中提供支援

2、視窗訊息 標準的windows訊息以及專用的wm_copydata訊息 sendmessage()接收端必須有乙個視窗

3、使用

共享記憶體方式(shared memory)

a.設定一塊共享記憶體區域

lpvoid mapviewoffile(

dword dwdesiredacess,

dword dwfileoffsethigh,

dword dwfileoffsetlow,

dword dwnumberofbytestomap

);得到共享記憶體的指標

b.找出共享記憶體

決定這塊記憶體要以點對點(peer to peer)的形式呈現每個程序都必須有相同的能力,產生共享記憶體並將它初始化。每個程序

錯誤**是error_already_exists,那麼程序就可以假設這一共享記憶體區 域已經被別的程序開啟並初始化了,否則該程序就可以合理的認為自己 排在第 一位,並接下來將共享記憶體初始化。

還是要使用client/server架構中只有server程序才應該產生並初始化共享記憶體。所有的程序都應該使用

bool binherithandle,

lpctstr lpname);

再呼叫mapviewoffile(),取得共享記憶體的指標

c.同步處理(mutex)

d.清理(cleaning up) bool unmapviewoffile(lpcvoid lpbaseaddress);

closehandle()

4、動態資料交換(dde)通過維護全域性分配記憶體使的應用程式間傳遞成為可能

其方式是再一塊全域性記憶體中手工放置大量的資料,然後使用視窗訊息傳遞記憶體 指標.這是16位win時代使用的方式,因為在win32下已經沒有全域性和區域性記憶體 了,現在的記憶體只有一種就是虛存。

5、訊息管道(message pipe)

用於設定應用程式間的一條永久通訊通道,通過該通道可以象自己的應用程式訪問乙個平面檔案一樣讀寫資料。

匿名管道(anonymous pipes)

單向流動,並且只能夠在同一電腦上的各個程序之間流動。

命名管道(named pipes)

雙向,跨網路,任何程序都可以輕易的抓住,放進管道的資料有固定的格 式,而使用readfile()只能讀取該大小的倍數。

可以被使用於i/o completion ports

6、郵件槽(mailslots)

廣播式通訊,在32系統中提供的新方法,可以在不同主機間交換資料,在 win9x下只支援郵件槽客戶

7、windows套接字(windows socket)

它具備訊息管道所有的功能,但遵守一套通訊標準使的不同作業系統之上的應 用程式之間可以互相通訊。

9、rpc:遠端過程呼叫,很少使用,因其與unix的rpc不相容。

10、序列/並行通訊(serial/parallel communication)

它允許應用程式通過序列或並行埠與其他的應用程式通訊

11、com/dcom通過com系統的**存根方式進行程序間資料交換,但只能夠表現在對介面 函式的呼叫時傳送資料,通過dcom可以在不同主機間傳送資料。 

vc 中程序間的通訊

vc 中程序間的通訊 2006 11 23 10 44 乙個是作業系統用來管理程序的核心物件。核心物件也是系統用來存放關於程序的統計資訊的地方 另乙個是位址空間,它包含所有的可執行模組或dll模組的 和資料。它還包含動態分配的空間。如執行緒堆疊和堆分配空間。每個程序被賦予它自己的虛擬位址空間,當程序...

VC 中程序間相互通訊

vc 中程序間相互通訊的十一種方法 程序通常被定義為乙個正在執行的程式的例項,它由兩個部分組成 乙個是作業系統用來管理程序的核心物件。核心物件也是系統用來存放關於程序的統計資訊的地方 另乙個是位址空間,它包含所有的可執行模組或dll模組的 和資料。它還包含動態分配的空間。如執行緒堆疊和堆分配空間。每...

python中程序間通訊

程序間通訊 磁碟互動 速度慢 不安全 socket 本地套接字 管道 訊息列隊 共享記憶體 訊號 訊號量 套接字 管道通訊 pipe 在記憶體中開闢一塊空間,對多個程序可見,通過管道 多個程序進行通訊 multiprocessing pipe fd1,fd2 pipe duplex true 功能 ...