項目概述:
HP-SOCKET是一套通用TCP/UDP通訊框架,包括服務器、客戶端、Agent組件;其目標是提供高性能、通用性、簡易性、可擴展、可定製;windows
鑑於此,其僅實現基本的通用框架通訊、數據收發功能,供上層應用直接簡單使用的接口實現;而對於數據包完整性和協議解析等未處理,
也就意味着須要應用層本身處理一些數據包構造或解析等操做;服務器
事實上目前只能支持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++性能效率問題)。
socket