HP-SOCKET TCP/UDP通信框架庫解析



項目概述:
  HP-SOCKET是一套通用TCP/UDP通信框架,包括服務器、客戶端、Agent組件;其目標是提供高性能、通用性、簡易性、可擴展、可定制;

鑒於此,其僅實現基本的通用框架通信、數據收發功能,供上層應用直接簡單使用的接口實現;而對於數據包完整性和協議解析等未處理,
也就意味着需要應用層自己處理一些數據包構造或解析等操作;

事實上目前只能支持windows平台;
1. 對於TCP通信模式下:服務器端和Agent均采用的是異步IO模型中的完成端口模型,客戶端采用的是就緒IO通告模型中的WSAEventSelect模型;
2. 對於UDP通信模式下:服務器端采用的是異步IO模型中的完成端口模型,客戶端和Cast(廣播或組播)均采用的是就緒IO通告模型中的WSAEventSelect模型;
以上通信模式下,客戶端或廣播未采用完成端口模型是考慮到實現復雜性和實際的應用場景需要,當然如果需要均采用完成端口模型也是可以的;


題外話:

Windows平台下目前已有以下幾個通信模型:
1. 阻塞模式: 通過基礎的socket API函數的實現為最基本的通信方式;
2. 就緒通告IO模型: Select多路復用、WSAAsyncSelect依賴窗口的事件通知、WSAEventSelect關聯事件內核對象的事件通知;
3. 異步IO(重疊IO): 事件通告、回調通告、完成端口;
其中各個模型實現復雜度依次提高,性能也依次提高,故性能最好的便是完成端口,事實上完成端口不僅可以用於網絡通信,
還可以用於文件或其他涉及到IO相關的場合;各個模式有優缺點,可根據應用場景采用相應的實現模型便可,很多時候可以直接使用已寫好的穩定
通信框架而不一定要自己重頭開始寫,不過,無論怎么樣均要根據在項目中的實際需要來綜合考慮應該使用什么庫或是自己動手去實現;

 

項目綜述:
      整體上結構清晰、類層次分明,比較容易學習,此外采用基於事件回調的方式的實現方式,這樣控制組件和事件回調數據處理可以分離,便於客戶更好
地進行數據處理,而無需要直到太多的細節實現,也便於擴展、實現庫功能;基本上該庫已封裝得很好並提供了C++和C的接口(C接口也只是簡單地對C++實現的接口包裝)
、便於其他語言封裝或擴展(分別封裝在HPSocket.h和HPSocket4C.h中,可以看到導出的接口比較多,事實上好在其分別對C++接口和C接口實現各自的解決方案生成不同DLL,
導出的接口數分別約30、460;PS:其實此處一起導出到同一個DLL也是可以的,問題也不大且更方便客戶更新庫或上層應用,實現共享);
項目主體采用C++實現,結合部分C公共實現部分(此處C++開發方便且易地擴展,對於公共部分功能不適合放在C++類中的均用C實現,以減少類的大小和功能的
集中處理,很好地運用了面向對象程序設計的原則)(不用擔心C++性能效率問題)。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM