Apache min 学習ノート (3) - IoService

黄舟
リリース: 2023-03-04 22:18:01
オリジナル
1314 人が閲覧しました

この章では、サーバーとクライアントですべての I/O サービスを提供する基本クラスである MINA の IoService について説明します。これは、ピアとのメッセージの送受信、セッション、接続などの管理に使用されます。


これは、サーバー側の IoAcceptor とクライアント側の IoConnector によって実装されるインターフェイスです。

このインターフェイスについては、次のパートで紹介します:

IoServiceの概要
IoServiceの詳細
IoAcceptor
IoConnector

IoServiceの概要

IoServiceは、基本的なI/Oサービスを提供し、MinaフレームワークでI/Oセッションを管理します。それはミナにとって非常に重要な部分です。

Apache min 学習ノート (3) - IoService

上の図で述べたように、IoService には多くの役割があります:


セッション管理
フィルターチェーン管理
ハンドラー呼び出し
統計​​管理
リスニング管理
通信管理

このインターフェースのメソッド

getTransportMetaデータ() ;

IoAcceptor または IoConnector が実行されている場合、このメソッドは、通常、名前 (nio、apr、txtx)、接続タイプ (コネクション型またはコネクションレス) を含む、送信されたメタデータを返します。

addListener

指定されたイベントをリッスンするための IoServiceListener を追加できます

removeListener

指定された IoserviceListener を削除します

isDisposing

サービスが破棄されている場合は、サービスのステータスを返します

isDissolved

サービスが破棄された場合、サービス

dispose

のステータスを返して、サービスによって要求されたすべてのリソースを解放します。ユーザーは、最初にサービスが完全に破棄されたかどうかを確認するために、上記の 2 つのメソッドを使用する必要があります。サービスを終了する場合は、必ずこのメソッドを呼び出してください

getHandler

サービスに関連付けられたメソッドを返します

setHandler

サーバーが受信したリクエストを解決するためのIoHandlerを設定します。このハンドラーにはプログラムロジックが含まれています。

getSessionConfig

セッション設定に戻る

getFilterChainBuilder

フィルターチェーンビルダーに戻る このメソッドは、フィルタリングを追加する必要がある場合に呼び出す必要があります。

IoService の詳細

Ioservice このインターフェイスは、MINA の 2 つの重要なクラス、IoAcceptor と IoConnector によって実装されます。サーバー側では IoAcceptor を選択する必要があり、クライアント側では IoConnector を選択する必要があります。

IoAcceptor

MINA には、すでに実装されているクラスがいくつかあります:

NioSocketAcceptor : 非ブロッキング ソケット トランスポート IoAcceptor
NioDatagramAcceptor : 非ブロッキング UDP トランスポート IoAcceptor
AprSocketAcceptor : APR に基づくブロッキング ソケット トランスポート IoAcceptor
V mPipeSocketアクセプター: VM 内の IoAcceptor

必要な IoAcceptor を選択します。

下の図は IoAcceptor クラスとインターフェイスです

Apache min 学習ノート (3) - IoService

IoConnector


NioSocketConnector : 非ブロッキングソケットトランスポート IoConnector
NioDatagramConnector : 非ブロッキング UDP トランスポート IoConnector
AprSocketConnector : ブロッキングソケットトランスポート年率に基づく
ProxyConnector : プロキシ サポートを提供する IoConnector
SerialConnector : シリアル トランスポート用の IoConnector
VmPipeConnector : VM 内の IoConnector

Apache min 学習ノート (3) - IoService


以下は概要としての例です:


たとえば、 TCP サーバーを作成するには、次のようなコードを記述します

public TcpServer() throws IOException {  
    // Create a TCP acceptor  
    IoAcceptor acceptor = new NioSocketAcceptor();  
  
    // Associate the acceptor to an IoHandler instance (your application)  
    acceptor.setHandler(this);  
  
    // Bind : this will start the server...  
    acceptor.bind(new InetSocketAddress(PORT));  
  
    System.out.println("Server started...");  
}
ログイン後にコピー

このようにして、Tcp サーバーが作成されます。UDP サーバーを作成したい場合は、それを IoAcceptor acceptor = new NioDatagramAcceptor();

に変更できます。
接続を解放するには、

acceptor.dispose(true)
ログイン後にコピー

フィルタチェーンを追加してサービスに追加します

// Add a logger filter  
DefaultIoFilterChainBuilder chain = new DefaultIoFilterChainBuilder();  
chain.addLast("logger", new LoggingFilter());  
  
// And inject the created chain builder in the service  
acceptor.setFilterChainBuilder(chain);
ログイン後にコピー

上記は、Apache Min 学習ノート (3) - IoService の内容です。その他の関連コンテンツについては、注意してください。 PHP 中国語 Web サイト (www.php.cn)!


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート