程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 高性能 Socket 組件 HP-Socket v3.2.1 正式發布

高性能 Socket 組件 HP-Socket v3.2.1 正式發布

編輯:C++入門知識

  HP-Socket 是一套通用的高性能 TCP/UDP Socket 組件,包含服務端組件、客戶端組件和 Agent 組件,廣泛適用於各種不同應用場景的 TCP/UDP 通信系統,提供 C/C++、C#、Delphi、E(易語言)、Java、Python 等編程語言接口。HP-Socket 對通信層實現完全封裝,上層應用不必關注通信層的任何細節;HP-Socket 提供基於事件通知模型的 API 接口,能非常簡單高效地整合到新舊應用程序中。為了讓使用者能方便快速地學習和使用 HP-Socket,迅速掌握組件的設計思想和使用方法,特此精心制作了大量 Demo 示例,包括 PUSH 模型示例、PULL模型示例和性能測試示例等。HP-Socket 目前運行在 Windows 平台,將來會實現跨平台支持。

----------------------------------------------------------------

通用性

  • 通信組件的唯一職責就是接受和發送字節流,絕對不能參與上層協議解析等工作。
  • 與上層使用者解耦、互不依賴,組件與使用者通過操作接口和監聽器接口進行交互,組件實現操作接口為上層提供操作方法;使用者實現監聽器接口把自己注冊為組件的 Listener,接收組件通知。因此,任何使用者只要實現了監聽器接口都可以使用組件;另一方面,甚至可以自己重新寫一個實現方式完全不同的組件實現給使用者調用,只要該組件遵從組件的操作接口,這也是 DIP 設計原則的體現。

可用性

  可用性對所有通用組件都是至關重要的,如果太難用還不如自己重頭寫一個來得方便。因此,組件的操作接口和監聽器接口設計得盡量簡單易用(通俗來說就是“傻瓜化”),這兩個接口的主要方法均不超過 5 個。另外,組件完全封裝了所有的底層 Socket 通信,上層應用看不到任何通信細節,不必也不能干預任何通信操作,Socket 連接被抽象為 Connection ID,該參數作為連接標識提供給上層應用識別不同的連接。

高性能

  作為底層的通用組件,性能問題是必須考慮的,絕對不能成為系統的瓶頸。而另一方面,從實際出發,根據客戶端組件與服務端組件的性能要求采用不同的 Socket 模型。組件在設計上充分考慮了性能、現實使用情景、可用性和實現復雜性等因素,確保滿足性能要求的同時又不會寫得太復雜。做出以下兩點設計決策:

  • 客戶端:在單獨線程中實現 Socket 通信交互,這樣可以避免與主線程或其他線程相互干擾;I/O 模型選擇 Event Select 通信模型。每個組件對象管理一個 Socket 連接。
  • 服務端:采用高效的 IOCP 通信模型;利用緩存池技術,在通信的過程中,通常需要頻繁的申請和釋放內存緩沖區,建立了動態緩存池, 只有當緩存池中沒有可用對象時才創建新對象,而當緩存對象過多時則會壓縮緩存池;另外,組件的動態內存通過私有堆(Private Heap)機制分配,避免與 new / malloc 競爭同時又減少內存空洞。
  • Agent:對於代理服務器或中轉服務器等應用場景,服務器自身也作為客戶端向其它服務器發起大規模連接,一個 Agent 組件對象管理多個 Socket 連接,與服務端采用相同的技術架構,可以用作代理服務器或中轉服務器的客戶端部件。

伸縮性

  可以根據實際的使用環境要求設置組件的各項性能參數(如:工作線程的數量、各種緩存池的大小、收發緩沖區的大小、Socket 監聽隊列的大小、Accep 派發的數目以及心跳檢查的間隔等)。

   (項目主頁:點擊這裡,下載地址:點擊這裡)


*** v3.2.1 更新 ***

 > 增加 TcpAgent / TcpPullAgent 通信組件:

-----------------

> 增加 HPSocket for Java SDK:

-----------------

> 優化數據收發策略:

-----------------

> 其它更新:

-----------------

> 升級說明:

-----------------
*** v3.1.3 更新 ***

 > 增加其它語言 Demo:

-----------------

> Bug Fix:

-----------------
*** v3.1.2 更新 ***

 > 修改 Server 組件的 OnClose() / OnError() 事件的觸發規則:

-----------------
*** v3.1.1 更新 ***

 > 增加導出純 C 函數的動態鏈接庫 HPSocket4C.dll:

-----------------

> 全面啟用 Buffer Pool 緩存機制:

-----------------
*** v3.0.2 更新 ***

 > 把 HP-Socket 編譯為動態鏈接庫:

-----------------


*** v3.0.1 更新 ***

 > 新增 UDP 通信組件:

-----------------

> 代碼重構與優化:

-----------------


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved