如何實現程序間資料通訊技術
1、引言
在windows程式中,各個程序之間常常需要交換資料,進行資料通訊。win32 api提供了許多函式使我們能夠方便高效地進行程序間的通訊,通過這些函式我們可以控制不同程序間的資料交換,就如同在win16中對本地程序進行讀寫操作一樣。
典型的win16兩程序可以通過共享記憶體來進行資料交換:(1)程序a將globalalloc(gmem_share...)api分配一定長度的記憶體;(2)程序a將globalalloc函式返回的控制代碼傳遞給程序b(通過乙個登入訊息);(3)程序b對這個控制代碼呼叫globallock函式,並利用globallock函式返回的指標訪問資料。這種方法在win32中可能失敗,這是因為globallock函式返回指向的是程序a的記憶體,由於程序使用的是虛擬位址而非實際實體地址,因此這一指標僅與a程序有關,而於b程序無關。
本文**了幾種win32下程序之間通訊的幾種實現方法,讀者可以使用不同的方法以達到程式執行高效可靠的目的。
2、windows95中程序的記憶體空間管理
win32程序間通訊與windows95的記憶體
管理有密切關係,理解windows95的記憶體
管理對我們如下的程式設計將會有很大的幫助,下面我們討論以下windows95中程序的記憶體空間管理。
在win16下,所有windows應用程式共享單一位址,任何程序都能夠對這一空間中屬於共享單一的位址空間和屬於其他程序的記憶體進行讀寫操作,甚至可以訪問作業系統本身的資料,這樣就可能破壞其他程式的資料段**。
在win32下,每個程序都有自己的位址空間,乙個win32程序不能訪問另乙個位址的私有資料,兩個程序可以用具有相同值的指標定址,但所讀寫的只是它們各自的資料,這樣就減少了程序之間的相互干擾。另一方面,每個win32程序擁有4gb的位址空間,但並不代表它真正擁有4gb的實際物理記憶體,而只是作業系統利用cpu的記憶體分配功能提供的虛擬位址空間。在一般情況下,絕大多數虛擬位址並沒有物理記憶體與它對應,在真正可以使用這些位址空間之前,還要由作業系統提供實際的物理記憶體(這個過程叫「提交」commit)。在不同的情況下,系統提交的物理記憶體是不同的,可能是ram,也可能是硬碟模擬的虛擬記憶體。
3、win32中程序間的通訊
在windows 95中,為實現程序間平等的資料交換,使用者可以有如下幾種選擇:
* 使用記憶體對映檔案
* 通過共享記憶體dll共享記憶體
管理對程序之間的通訊有較為嚴格的限制。這就確保了任何故障程式無法意外地寫入使用者的位址空間,而使用者則可根據實際情況靈活地進行程序間的資料通訊,從這一點上來講windows95增強了應用程式的強壯性。
Activity資料通訊
若要從子activity獲取返回資訊時,可呼叫以下activity方法 public void startactivityforresult intent intent,int requestcode 該方法的第乙個引數為intent,第二個引數是請求 請求碼是先傳送給子activity,然後再返回...
資料通訊基礎
通道的最高碼元傳輸速率 根據奈氏 nyquist 準則,理想碼元傳輸速率n 2w baud 其中w是理想低通訊道的頻寬,單位為hz,baud是波特,是碼元傳輸速度的單位。通道的極限資訊傳輸速率 shannon用資訊理論的理論推導出了頻寬受限且有高斯白雜訊干擾的通道的極限 無差錯的資訊傳輸速率。其中w...
資料通訊概述
基本概念的介紹 模擬通訊 頻分復用 數字通訊 時分復用 一則離散訊息包含的資訊量 i log ap i log a p i loga p 資料通訊 依照通訊協議,資料傳輸技術在兩個功能單元之間傳遞資料資訊 資料通訊業務 分組交換業務 數字資料業務 幀中繼業務 寬頻業務 資料通訊系統 資料終端裝置dt...