高性能TCP/UDP/HTTP通信フレームHP-Stocket v 4.0.1リリース


高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.0.1 发布_第1张图片
HP-Stocketは、汎用的な高性能TCP/UDP/HTTP通信フレームであり、サービスエンドコンポーネント、クライアントコンポーネント、Agentコンポーネントを含み、様々なアプリケーションシーンに広く適用されているTCP/UDP/HTTP通信システムで、C/C+、C觀、Delphi、E(言語交換)、Java、Pythonなどのプログラミング言語インターフェースを提供しています。HP-SCocketは通信層の完全パッケージ化を実現し、アプリケーションは通信層の詳細に注目する必要がない。HP-Stocketは、イベント通知モデルに基づくAPIインターフェースを提供し、新旧のアプリケーションに非常に簡単に効率的に統合することができます。
使用者がHP-Socketを簡単に学習し、使用することができるように、フレームの設計思想と使用方法を迅速に把握するために、多くのDemo例(例えば、PUSHモデル例、PULLモデル例、PACKモデル例、性能試験例、および他のプログラミング言語例)を丹念に作成しました。HP-Stocketは現在Windowsプラットフォームで動作しています。将来はクロスプラットフォームのサポートを実現します。
『HP-Socket v 4.0開発ガイド』
------------------------------------
汎用性
  • HP-Stocketの唯一の役割は、バイトストリームの受信と送信、アプリケーションのプロトコル解析などの仕事に参加しないことです。
  • HP-Stocketは、アプリケーションとインターフェースを介して相互作用し、完全に結合されます。どのような用途でもHP-SCocketのインターフェース仕様を実現すれば、HP-Stocketをシームレスに統合できます。
  • 使いやすさ
  • の使いやすさは、すべての汎用フレームワークにとって重要であり、使いにくいなら、自分で書き直すよりも便利である。したがって、HP-SCocketのインターフェースは非常にシンプルで統一的に設計されています。
  • HP-Stocketは、すべての下層通信の詳細を完全にカプセル化しています。アプリケーションは、必要なくても、下層通信の操作に干渉することができません。通信接続はConnection IDとして抽象化され、Connection IDは接続の固有の識別情報としてアプリケーションに提供され、異なる接続を処理する。
  • HP-Stocketは、PUSH/PULL/PACKなどの受信モデルを提供しています。アプリケーションは、ハンドメイド、半自動または全自動で、パッケージの解凍を処理します。PULL/PACK受信モデルは、解凍処理の複雑さを低減すると同時に、エラー確率を大幅に減らすことができます。
  • 高性能
  • Clientコンポーネント:Event Select通信モデルに基づいて、個々のスレッドで通信動作を行い、メインスレッドまたは他のスレッドとの干渉を避ける。各コンポーネントオブジェクトはソケット接続を管理します。
  • Serverコンポーネント:IOCP通信モデルに基づいて、キャッシュ・プール、プライベート・ヒープなどの技術を組み合わせて、超大規模接続をサポートし、高合併シーンで効率的なメモリ管理を実現します。
  • Agentコンポーネント:プロキシサーバや中継サーバなどのアプリケーションシーンに対して、サーバ自身もクライアントとして他のサーバに大規模な接続を開始し、一つのAgentコンポーネントオブジェクトは複数のソケット接続を同時に管理することができる。AgentコンポーネントはServerコンポーネントと同じ技術アーキテクチャを採用しており、プロキシサーバまたは中継サーバのクライアントコンポーネントとして機能することができる。
  • 伸縮性
    アプリケーションは、様々な容量要件、通信規模、リソース状況などの現実的なシーンに応じて、HP-SCocketの各性能パラメータ(例えば、ワークスレッドの数、キャッシュプールの大きさ、送信モード、受信モードなど)を調整し、リソースの配置を最適化し、アプリケーションのニーズを満たすと同時に、リソースを過剰に浪費する必要がない。
    (プロジェクトのホームページ:ここをクリックして、住所をダウンロードします。ここをクリックしてください。)
    ****v 4.0.1更新****
     > HTTPシリーズの通信コンポーネントを追加します。
    ----------------
    高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.0.1 发布_第2张图片
    HTTP Serverコンポーネント1を追加します。 コンポーネント類:CHttpServer、CHttpserver 2) 実現インターフェース:ITcpServer/IComplexHttpResoponder 3)モニタインターフェース:IHttp Server Listener HTTP Agentコンポーネント1を追加します。 コンポーネント類:CHttpAgent、CHttpAgent 2) 実現インターフェース:ITcpAgent/IComplexHttpRequester 3)モニターインターフェース:IHttpAgentListener HTTP Cientコンポーネント1を追加します。 コンポーネント類:CHttpClient、CHttpClient 2) 実現インターフェース:ITcpClient/IHttpRequester 3)モニターインターフェース:IHttp ServerListener HTTP例Demo 1を追加します。 TestEcho-Http(ソースコード)2) TestEcho-Http-4 C(4 C LIB/4 C DLL)Httpモニタ1) モニターイベント:
    OnMessageBegin()	: 【  】    
    OnRequestLine()		: 【  】       (    HTTP    )
    OnStatusLine()		: 【  】       (    HTTP    )
    OnHeader()		: 【  】     
    OnHeadersComplete()	: 【  】       
    OnBody()		: 【  】       
    OnChunkHeader()		: 【  】Chunked      
    OnChunkComplete()	: 【  】Chunked       
    OnMessageComplete()	: 【  】      
    OnUpgrade()		: 【  】      
    OnParseError()		: 【  】      
    ) モニタイベント戻り値:
    HPR_OK		:     
    HPR_SKIP_BODY	:        BODY(    OnHeadersComplete   )
    HPR_UPGRADE	:     (    OnHeadersComplete   )
    HPR_ERROR	:     ,    
     > コンポーネントインターフェースの調整:
    ----------------
    IServerとIAgentコンポーネントのすべてのモニターコールバック方法は、OnShutdown()->OnShutdown(T*pSender)のような‘イベントソース’パラメータを増加させる。
    IClientコンポーネントのすべてのモニターコールバック方法は、OnhandShake(IClient*pClient)->OnhandShake(T*pSender、CONNID dwConID)のような‘接続ID’パラメータを増加させる。
    IServerとIAgentインターフェースの追加方法:Get/SetMaxConnection Count()は最大接続数を設定するためのもので、最大接続数のデフォルトは10000 です。
    OnHandShake()イベントトリガルール調整:非SSLコンポーネントは、OnConnect()イベント後もOnHandShake()イベントをトリガし、SSLコンポーネントとSSLコンポーネントの処理フローを一致させる。
    HPSockett 4 Cは、PACKコンポーネントモニターの作成、廃棄方法を追加します。新しいバージョンは次の方法でPACKコンポーネントモニターを作成、廃棄しなければなりません。HPTcpPackServer Listener/Destroy_HPTcpPackServer Listener 2) Create_HPTcpPackAgentListener/Destroy_HPTcpPackAgentListener 3) Create_HPTcpPackClient Listener/Destroy_HPTcpPackCient Listener SSLコンポーネントはSNI 1に対応しています。 SSL初期化方法HP_SSLInitialize()を追加し、SNIフィードバック関数ポインタパラメータ2を追加します。SSLAddServer Contect()は、SNIホスト証明書をロードするための > その他の更新:
    ----------------
    IServerとIAgentコンポーネントはR/Wロック+Mapの代わりにRing Poolでアクティブな接続を維持し、読み書きと同時性能を向上させます。
    すべてのデモコードを更新します。
    **v 3.5.更新***
     > SSLシリーズの通信コンポーネントを追加します。
    ----------------
    SSL PUSHコンポーネントを追加します。CSSLServer、CSSLAgent、CSSLClient SSL PULLコンポーネントを追加しました。CSSL Pulserver、CSSLPulAgent、CSSLPulClient SSL PACKコンポーネントを追加します。CSSL PackServer、CSSL PackAgent、CSSL PackClient SSL ServerはITcpServerインターフェースを実現し、SSL AgentはITcpAgentインターフェースを実現し、SSL ClientはITcpClientインターフェースを実現します。
    SSL通信コンポーネントを起動する前にHP_を呼び出す必要があります。SSLInitialize()関数初期化SSLグローバル環境パラメータ通信が完了したらHP_を呼び出します。SSLCleadnup()関数はSSLグローバル運転環境を整理します。
    SSL関連例Demoを追加しました。
    1) TestEcho-SSL		(   )
    2) TestEcho-SSL-Pack	(DLL / 4C DLL)
    3) TestEcho-SSL-4C	(4C LIB)
    4) TestEcho-SSL-PFM	(LIB)
    高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.0.1 发布_第3张图片
    > コンポーネントインターフェースの調整:
    ----------------
    ITcpServerListenerインターフェースにSSL握手成功イベントを追加しました。OnHandShake(CONNID dwConID)ITcpAgentListenerインターフェースにSSL握手成功イベントを追加しました。OnHandShake(CONNID dwConID)ITcpClient ListenerインターフェースはSSL握手成功イベントを増加します。OnHandShake エニュメレーションタイプESocketErrorに『SSL環境未了』エラーコードを追加しました。SSLENV_NOT_READY  エニュメレーションの種類を追加:EnsLSessionMode(SSL作業モード)、EnsterifyMode(SSL検証モード)  HPSockets-SL DLLの主要ヘッダファイル:SocketInterface-SL.h,HPSocket-SSL.h HPSocket 4 C-SSL DLLの主要ヘッダファイル:HPSocket 4 C-SSL.h Tcp Packシリーズのコンポーネントで設定可能な最大パケット長は、4194303/0 x 3 FFFFFバイトに調整される。
    Tcp Packシリーズコンポーネントの有効ヘッダ識別範囲は0~1023/0 x 3 FF に調整されます。
    > スタティックライブラリプロジェクトを追加:
    ----------------
    プロジェクトプロジェクトHPSocketLIBとHPSocketLIB 4 Cを追加して、HPSocketとHPSocket 4 Cスタティックライブラリをコンパイルします。
    静的ライブラリは、ダイナミックライブラリの使用方法と一致しています。
    HPSocketまたはHPSocket 4 Cスタティックライブラリを使用する場合は、事前処理マクロ->HPSOCKET_をプロジェクト属性に定義する必要があります。STATIC_LIB スタティックライブラリのターゲットファイルは公開パッケージに含まれていません。必要ならば自分でコンパイルしてください。
    ****v 3.4.4更新***
     > Tcp Packシリーズの通信コンポーネントを追加します。
    ----------------
    Tcp Packシリーズコンポーネントは、各OnReceiveイベントがアプリケーションに完全なパケットを提供することを保証する。
    Tcp Packシリーズコンポーネントは、PUSH/PULLモードの結合体であり、アプリケーションは、パケット分割(例えば、PUSH)とデータキャプチャ(例えば、PULL)を処理する必要がない。
    Tcp Packシリーズのコンポーネントは、Get/SetMaxPackSize()とGet/SetPackHeaderFlags()の方法を提供し、最大のパケット長とパケットヘッダ識別子を設定するために使用されます。
    CTcpPackServerはITcpServerインターフェースを実現し、CTcpPackAgentはITcpAgentインターフェースを実現し、CTcpPackClientはITcpClifeインターフェース高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.0.1 发布_第4张图片 を実現する。
    > コンポーネントインターフェースの調整:
    ----------------
    OnClose/OnErrorは通信イベントとして統合されました。OnClose(CONNID dwConID、ESocketOperation enOperation、int iErroCode)エニュメレーションの種類は、エニュメレーションの値を追加します。SO_CLOSE=5,識別OFFソケット動作IServerとIAgentインターフェース削除方法:Get/SetRecvPolicy()IServerとIAgentインターフェース削除方法:Get/SetMaxShutdown WaitTime()> Bug修復:
    ----------------
    TCP Pack Agent「非同期接続失敗によるプログラム崩壊」を修正するBug vc-common-src共通コードパックを修復するCCASQueは無限ループBug を引き起こす可能性があります。