在使用VS2010開發項目時,常常須要實現一些動態的DLL庫的開發,其在開發過程當中,須要dll能自動調用回調函數,實現數據傳輸。所以,在項目中,須要使用到函數的指針,函數的指針能很好的解決該問題。下面採用socket的通訊爲例。
socket
在咱們認知的socket的通訊模型中,其採用cs經典模型,爲了使咱們的代碼具備更好的可移植複用性,通常講,socket的直接通訊層進行封裝成DLL,做爲咱們之後開發的基礎類。
函數
Client Server 設備
spa
| ----鏈接------------------> | |
線程
| < ---響應 ------------------ | <-----------創建通訊----------------> |
指針
| ----------命令-設置------> | <-----------創建獲取數據類型-------> |
開發
| <-----------響應----------- | <--------- 傳輸數據 --------------- |
回調函數
| <-------------響應--------- | <--------- 傳輸數據 --------------- |基礎
| <------------響應----------- | <--------- 傳輸數據 --------------- |cli
通訊方式如上圖所示,所以,採用函數指針在客戶端進行回調,可實現被動傳輸數據的過程。數據類型
在客戶端的應用中,socket的client的基類DLL保存好,定義的函數指針,並具備回調函數註冊功能。在該DLL中採用一個線程,使其能更好的獲取設備的數據等。在獲取到數據後,按照不一樣的數據類型採用不一樣的回調函數傳輸,回調函數在客戶端的應用中實現,即實現socket的客戶端接收到服務其的數據就自動調用回調函數,在客戶端中,直接根據不一樣的數據進行處理,不須要採用輪詢獲取的方式。
因該問題比較常見實用,所以,做爲一個筆記記錄下來,文中若有錯誤,請讀者指正。