日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

高性能 Windows Socket 组件 HP-Socket v2.3.1-beta-1 发布

發布時間:2025/5/22 windows 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 高性能 Windows Socket 组件 HP-Socket v2.3.1-beta-1 发布 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  HP-Socket 是一套通用的高性能 Windows Socket 組件包,包含服務端組件(IOCP 模型)和客戶端組件(Event Select 模型),廣泛適用于 Windows 平臺的 TCP/UDP 通信系統。HP-Socket 對通信層實現完全封裝,上層應用不必關注通信層的任何細節;HP-Socket 提供基于事件通知模型的 API 接口,能非常簡單高效地整合到各類應用程序中;另外,為了讓大家能更方便的學習 HP-Socket,特此精心制作了功能測試示例(Test Echo)性能測試示例(Test Echo-PFM)PULL 模型測試示例(Test Echo-Pull)?和 UDP 測試示例(Test Echo-UDP),用戶可以通過這幾個測試示例入手,迅速掌握組件的設計思想和使用方法。

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

通用性

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

可用性

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

高性能

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

  • 客戶端:在單獨線程中實現 Socket 通信交互。這樣可以避免與主線程或其他線程相互干擾;I/O 模型選擇 Event Select 通信模型。
  • 服務端:采用 Windows 平臺效率最高的 IOCP 通信模型;利用緩存池技術,在通信的過程中,通常需要頻繁的申請和釋放內存緩沖區,建立了動態緩存池, 只有當緩存池中沒有可用對象時才創建新對象,而當緩存對象過多時則會壓縮緩存池;另外,組件的動態內存通過私有堆(Private Heap)機制分配,避免與 new / malloc 競爭同時又減少內存空洞。

伸縮性

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

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


*** v2.3.1 (Beta-1)更新 ***

?> 新增 UDP 通信組件:

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

  • 新增兩個 UDP 通信組件:CUdpServer 為服務端組件,CUdpClient 為客戶端組件
  • 服務端組件 CUdpServer 采用 IOCP 通信模型
  • 客戶端組件 CUdpClient 采用 Event Select 通信模型
  • UDP 通信組件的接口與原 TCP 通信組件一致,簡單實用
  • 新增 UDP 通信組件示例工程 TestEcho-UDP
  • > 代碼重構與優化:

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

  • 規范所有接口、類以及代碼文件的命名
  • 進一步優化 TCP 服務端和客戶端組件代碼
  • > 升級說明:

    ?-----------------

  • 使用 HP-Socket v2.2.3 的應用程序可以安全升級到 HP-Socket v2.3.1
  • 由于重命名了大量接口、類以及代碼文件,因此升級時需要作相應調整

  • *** v2.2.3 更新 ***

    ?> 連接 ID 的數據類型改為 ‘CONNID’:

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

  • 在SocketHelper.h 中定義 CONNID 數據類型(默認:typedef ULONG_PTR CONNID)
  • 應用程序可以把 CONNID 定義為其希望的類型(如:ULONG / ULONGLONG 等)
  • 為了便于移植與維護,應用程序的任何地方都應該用‘CONNID’類型引用連接 ID
  • > 服務端 Socket 組件支持為每個連接綁定附加數據:

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

  • IServerSocket 和 CIocpServer 增加方法 Get/SetConnectionExtra()
  • 通過上述兩個方法,應用程序可以為每個連接綁定任意附加數據并把數據獲取出來
  • > 其它更新:

    ?-----------------

  • 放寬 CIocpServer 的最大 IOCP 工作線程數目限制(64 改為 500)
  • 服務端 Socket 組件的 Disconnect() 方法增加一個標識參數‘bForce’,指示是否強制斷開連接
  • 調整連接 ID 的生成規則,避免生成數值為 0 的連接 ID

  • *** v2.2.2 更新 ***

    ??> 優化心跳檢測相關功能:

    ?-----------------

  • IServerSocket 和 IClientSocket 的 Get/SetKeepAliveTimes() 方法改為 Get/SetKeepAliveTime()
  • CIocpServer 和 CClientSocket 的默認 KeepAliveTime 屬性改為 5000
  • CIocpServer 和 CClientSocket 的默認 KeepAliveInterval 屬性改為 3000

  • *** v2.2.1 更新 ***

    > PULL 模型支持:

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

  • ISocketListener 增加 PULL 模型數據接收通知方法 OnReceive(dwConnID, int)
  • 增加 PULL Socket 接口 IPullSocket,該接口的 Fetch(dwConnID, pBuffer, iLength) 方法用于抓取通信數據
  • > Server:

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

  • 服務端 Socket 接口 ISocketServer 改名為 IServerSocket
  • 增加 PULL Server Socket 監聽器抽象類 CPullServerSocketListener
  • 增加 PULL Server Socket 接口 IPullServerSocket
  • 增加 PULL Server Socket 實現類 CIocpPullServer
  • > Client:

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

  • 客戶端 Socket 接口 ISocketClient 改名為 IClientSocket
  • 客戶端 Socket 實現類 CSocketClient 改名為 CClientSocket
  • 增加 PULL Client Socket 監聽器抽象類 CPullClientSocketListener
  • 增加 PULL Client Socket 接口 IPullClientSocket
  • 增加 PULL Client Socket 實現類 CPullClientSocket  
  • > 其它更新:
    -----------------

  • 增加 PULL Socket 測試程序 TestEcho-Pull
  • 在 SocketHelper.h (.cpp) 中添加若干幫助結構體

  • 總結

    以上是生活随笔為你收集整理的高性能 Windows Socket 组件 HP-Socket v2.3.1-beta-1 发布的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。