高性能 TCP & UDP 通信框架 HP-Socket v3.4.3 正式發布

2020-12-16 開源中國

高性能 TCP & UDP 通信框架 HP-Socket v3.4.3 正式發布了,HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服務端組件、客戶端組件和 Agent 組件,廣泛適用於各種不同應用場景的 TCP/UDP 通信系統,提供 C/C++、C#、Delphi、E(易語言)、Java、Python 等程式語言接口。HP-Socket 對通信層實現完全封裝,應用程式不必關注通信層的任何細節;HP-Socket 提供基於事件通知模型的 API 接口,能非常簡單高效地整合到新舊應用程式中。

為了讓使用者能方便快速地學習和使用 HP-Socket,迅速掌握框架的設計思想和使用方法,特此精心製作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、PACK 模型示例、性能測試示例以及其它程式語言示例)。HP-Socket 目前運行在 Windows 平臺,將來會實現跨平臺支持。

  《HP-Socket v3.4 開發指南》

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

通用性

易用性

  • 易用性對所有通用框架都是至關重要的,如果太難用還不如自己重頭寫一個來得方便。因此,HP-Socket 的接口設計得非常簡單和統一。

  • HP-Socket 完全封裝了所有底層通信細節,應用程式不必也不能干預底層通信操作。通信連接被抽象為 Connection ID,Connection ID 作為連接的唯一標識提供給應用程式來處理不同的連接。

  • HP-Socket 提供 PUSH / PULL / PACK 等接收模型, 應用程式可以靈活選擇以手工方式、 半自動方式或全自動方式處理封解包, PULL / PACK 接收模型在降低封解包處理複雜度的同時能大大減少出錯機率。

高性能

  • Client 組件:基於 Event Select 通信模型,在單獨線程中執行通信操作,避免與主線程或其他線程相互幹擾。每個組件對象管理一個 Socket 連接。

  • Server 組件:基於 IOCP 通信模型,並結合緩存池、私有堆(Private Heap)等技術,支持超大規模連接,在高並發場景下實現高效內存管理。

  • Agent 組件:對於代理伺服器或中轉伺服器等應用場景,伺服器自身也作為客戶端向其它伺服器發起大規模連接,一個 Agent 組件對象同時可管理多個 Socket 連接;Agent 組件與 Server 組件採用相同的技術架構,可以用作代理伺服器或中轉伺服器的客戶端部件。

伸縮性

      應用程式能夠根據不同的容量要求、通信規模和資源狀況等現實場景調整 HP-Socket 的各項性能參數(如:工作線程的數量、緩存池的大小、發送模式和接收模式等),優化資源配置,在滿足應用需求的同時不必過度浪費資源。

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


*** v3.4.3更新 ***

 > 增加 Tcp Pack 系列通信組件:

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

  1. Tcp Pack 系列組件保證每個 OnReceive 事件都向應用程式提供一個完整數據包

  2. Tcp Pack 系列組件是 PUSH/PULL 模式的結合體,應用程式不必處理分包(如:PUSH)與數據抓取(如:PULL)

  3. Tcp Pack 系列組件提供 Get/SetMaxPackSize() 和 Get/SetPackHeaderFlag() 方法,用來設置最大包長和包頭標識

  4. CTcpPackServer 實現 ITcpServer 接口,CTcpPackAgent 實現 ITcpAgent 接口,CTcpPackClient 實現 ITcpClient 接口

> 組件接口調整:

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

  1. OnClose/OnError 合併為一個通信事件: OnClose(CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode)

  2. 枚舉類型 EnSocketOperation 增加一個枚舉值: SO_CLOSE = 5,標識關閉 Socket 操作

  3. IServer 和 IAgent 接口刪除接口方法: Get/SetRecvPolicy()

  4. IServer 和 IAgent 接口刪除接口方法: Get/SetMaxShutdownWaitTime()

> Bug 修復:

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

  1. 修復 TcpPackServer 和 TcpPackAgent 某些屬性設置不生效 Bug

  2. 修復 vc-common-src 公共代碼包的 CCASQueue 可能導致無限循環 Bug


相關焦點

  • smart-socket v1.4.4 Bate 版發布,遲到的 UDP 通信
    smart-socket 是一款國產開源的 Java AIO 框架,追求代碼量、性能、穩定性、接口設計各方面都達到極致。
  • HP-Socket v4.1.2,高性能 TCP & HTTP 通信框架
    HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服務端組件、客戶端組件和 Agent 組件,廣泛適用於各種不同應用場景的
  • HP-Socket v4.2.1,高性能 TCP & HTTP 通信框架
    HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服務端組件、客戶端組件和 Agent 組件,廣泛適用於各種不同應用場景的 TCP/UDP/HTTP 通信系統,提供 C/C++、C#、Delphi
  • python筆記28(TCP,UDP,socket協議)
    4、代碼部分:①介紹socket;②使用socket完成tcp協議的web通信;③使用socket完成udp協議的web通信。1、TCP協議1、可靠,慢,全雙工通信2、建立連接的時候,三次握手3、斷開連接的時候,四次揮手4、在建立起連接後發送的每條信息都有回執為了保證數據的完整性,還有重傳機制5、長連接:會一直佔用雙方的埠6、I/O操作(input,output),輸入輸出相對內存來說的。
  • Proxy-Go v3.3 發布,socks 新增 UDP 支持並增強代理穩定性
    Proxy-Go v3.3 發布了。
  • 通信框架 smart-socket 1.4.10 發布,bug 修復與示例補充
    smart-socket 是一個 AIO 通信框架,可以快速、輕鬆地開發 Client/Server 網絡應用程式。
  • Linux進程間通信的socketpair()函數
    所以,socketpair()這個函數就被master+worker型的多進程伺服器廣泛用於master和各個worker的通信。也可以用於子進程間的通信,因為第二個子進程被fork()時一樣要共享父進程的socketpair,只要子進程間規定好誰使用1,誰使用2就行。
  • TCP與UDP區別趣圖 小技巧:快速判斷udp,tcp埠是否同通暢
    例如超過50K的一個udp包,不切割直接通過send方法發送也會導致這個包丟失。這種情況需要切割成小包再逐個send。 3、發送的包較大,超過接受者緩存導致丟包:包超過mtu size數倍,幾個大的udp包可能會超過接收者的緩衝,導致丟包。這種情況可以設置socket接收緩衝。以前遇到過這種問題,我把接收緩衝設置成64K就解決了。
  • 基於TCP的網絡實時聊天室(socket通信案例)
    所以,系列文章從入門開始,不斷完善C/S架構的Socket通信,回憶一下,首先是實現了Server和Client的互相通信,在這個過程發現問題,接著就使用多線程技術解決客戶端實時接收信息的問題,後來到了伺服器端,發現多用戶連接伺服器的「先到先得」問題,「後到者」無法正常通信,所以再使用線程池技術解決了多用戶伺服器的問題。
  • 簡單說說Python Socket編程步驟?
    廢話不多說,開始今天的題目:問:簡單說說Python socket編程步驟?答:Socket是應用層與TCP/IP協議族通信的中間軟體抽象層,它是一組接口。所以,我們無需深入理解tcp/udp協議,socket已經為我們封裝好了,我們只需要遵循socket的規定去編程,寫出的程序自然就是遵循tcp/udp標準的。Python 提供了兩個基本的 socket 模塊。第一個是 Socket,它提供了標準的 BSD Sockets API。第二個是 SocketServer, 它提供了伺服器中心類,可以簡化網絡伺服器的開發。
  • TCP和UDP區別
    看到內核源碼裡面 struct tcp_skb_cb *tcb;這個tcb是從 struc sk_buff(內核)裡面轉換獲取的,兩個數據結構都包含 struct socket,這個struct socket 怎麼這麼眼熟,又好像不對,應用層的accept傳入的是listenfd,再看一下源碼,有一個int kernel_accept(struct socket *sock,..)
  • smart-socket v1.5.0 發布,應該是目前最快的 AIO 框架
    smart-socket 是一個 AIO 通信框架,可以快速、輕鬆地開發 Client/Server 網絡應用程式。
  • QtSwissArmyKnife v3.3.0 發布,基於 Qt 打造的多功能、跨平臺調試...
    QtSwissArmyKnife v3.3.0 已經發布。
  • 介紹一下強大的純PHP高性能的socket伺服器框架workerman
    Workerman是什麼樣的框架?很多新手php程式設計師或中級程式設計師不一定知道也沒有接觸過這類框架。Workerman是一款純PHP開發高性能的socket伺服器框架。目前在市場被廣泛的用於移動通訊,手遊服務端、網路遊戲、聊天室、硬體通訊、智能家居、物聯網等領域的開發。
  • goproxy-android v1.1 發布,全能的安卓代理服務,內網穿透!
    高性能的 http 代理、https 代理、socks5 代理、ss 代理、內網穿透、內網穿透 p2p、內網穿透代理、內網穿透反向代理、內網穿透伺服器、遊戲盾、遊戲高防、遊戲代理,支持 API 代理認證。websocket 代理、tcp 代理、udp 代理、socket 代理、高仿伺服器。
  • Swoole 開發框架 imi v1.1.0 發布,重磅引入 Partial 概念
    imi 是基於 PHP Swoole 的高性能協程應用開發框架,它支持 HttpApi、WebSocket、TCP、UDP 服務的開發。imi 框架擁有豐富的功能組件,可以廣泛應用於網際網路、移動通信、企業軟體、雲計算、網路遊戲、物聯網(IOT)、車聯網、智能家居等領域。可以使企業 IT 研發團隊的效率大大提升,更加專注於開發創新產品。首創毫秒級的註解及代碼熱更新重啟,讓你在開發時只管一把梭,體驗與 fpm 下開發並無二致,保存就刷新,立馬看到效果。
  • Proxy-Go v3.7 發布,緊急修復socks代理問題,建議升級
    Proxy-Go v3.7 發布了。
  • python socket實戰(二)
    每周一總結,準時為你充電上周講了1和2部分,這周接著講3和4,希望給以後用到socket編程的同學一些參考。在真正的項目工程中,如果是涉及到底層到消息交互,譬如和硬體設備通信,都會自定義協商好交互到消息頭欄位。這個在c語言編程中尤為常見。例如,有一個如下到結構體,python如何用socket進行通信傳遞該消息呢。
  • Linux C語言高級編程之Socket網絡編程!
    基於socket的一對一通信模型1、服務端:1)創建socket,使用socket函數;2)準備通信地址,使用結構體類型;3)綁定socket和通信地址,使用bind函數;4)進行通信,使用read/write函數;
  • 框架篇:見識一下linux高性能網絡IO+Reactor模型
    通常我們會基於socket與遠端建立一條TCP或者UDP通道,然後進行讀寫。單個socket時,使用一個線程即可高效處理;然而如果是10K個socket連接,或者更多,我們如何做到高性能處理?這就是「I/O多路復用」,多路是指多個socket套接字,復用是指復用同一個進程linux提供了select、poll、epoll等多路復用I/O的實現方式,是現階段主流框架常用的高性能I/O模型與阻塞IO不同,select不會等到socket數據全部到達再處理,而是有了一部分socket數據準備好就會恢復用戶進程來處理。怎麼知道有一部分數據在內核准備好了呢?