Notes d'étude Apache Mina (3) - IoService

黄舟
Libérer: 2023-03-04 22:18:01
original
1324 Les gens l'ont consulté

Dans ce chapitre, nous parlons du IoService de MINA - une classe de base qui fournit tous les services d'E/S sur le serveur et le client. Elle est utilisée pour envoyer et recevoir des messages avec le homologue, gérer les sessions, les connexions, etc.

C'est une interface, implémentée par IoAcceptor côté serveur et IoConnector côté client.

Nous présenterons cette interface dans les parties suivantes :

Introduction à IoService
Détails d'IoService
IoAcceptor
IoConnector

Introduction à IoService

IoService fournit des services d'E/S de base dans le framework Mina et gère les sessions d'E/S. C'est une partie très critique de Mina.

Notes détude Apache Mina (3) - IoService

Comme mentionné dans l'image ci-dessus, IoService a de nombreuses responsabilités :

Gestion de session
Gestion de la chaîne de filtres
Appel du gestionnaire
Statistiques
Gestion de l'écoute
Gestion de la communication

Méthodes de cette interface :

getTransportMetadata();

Lorsque IoAcceptor ou IoConnector est en cours d'exécution, cette méthode renvoie les métadonnées transmises , incluant généralement le nom (nio, apr, txtx), le type de connexion (orientée connexion ou sans connexion).

addListener

Permet d'ajouter un IoServiceListener pour écouter les événements spécifiés

removeListener

Supprime un IoserviceListener spécifié

isDisposing

Si le service est supprimé, renvoyez le statut du service

isDisposed

Si le service a été supprimé, renvoyez le statut du service

dispose

Utilisé pour libérer toutes les ressources demandées par le service. Les utilisateurs doivent d'abord utiliser les deux méthodes ci-dessus pour vérifier si le service a été complètement supprimé. Lorsque vous souhaitez arrêter le service, veillez à appeler cette méthode

getHandler

Renvoyer la méthode associée au service

setHandler

Définir le IoHandler pour résoudre le problème que le serveur reçoit la demande, le gestionnaire contient la logique de votre programme

getSessionConfig

renvoie la configuration de la session

getFilterChainBuilder

renvoie le filtre générateur de chaîne lorsque le filtrage doit être ajouté. Quand, cette méthode doit être appelée.

IoService Détails

Ioservice Cette interface est implémentée par deux classes importantes dans MINA : IoAcceptor et IoConnector. Côté serveur, vous devez choisir IoAcceptor, et côté client, vous devez choisir IoConnector.

IoAcceptor

Dans MINA, il existe quelques classes déjà implémentées :

NioSocketAcceptor : le transport Socket non bloquant IoAcceptor
NioDatagramAcceptor : le transport UDP non bloquant IoAcceptor
AprSocketAcceptor : le IoAcceptor de transport Socket bloquant, basé sur APR
VmPipeSocketAcceptor : le IoAcceptor in-VM

Choisissez le IoAcceptor dont vous avez besoin.

L'image ci-dessous est la classe et l'interface IoAcceptor

Notes détude Apache Mina (3) - IoService

IoConnector

NioSocketConnector : le transport Socket non bloquant IoConnector
NioDatagramConnector : le transport UDP non bloquant IoConnector
AprSocketConnector : le transport Socket bloquant IoConnector, basé sur APR
ProxyConnector : un IoConnector fournissant un support proxy
SerialConnector : un IoConnector pour un transport série
VmPipeConnector : le in -VM IoConnector

Notes détude Apache Mina (3) - IoService


Ce qui suit est un exemple en guise de résumé :

Par exemple, lorsque vous souhaitez créer un serveur TCP, vous pouvez écrire du code similaire à celui-ci

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...");  
}
Copier après la connexion

De cette façon, un serveur Tcp est créé. Si vous souhaitez créer un serveur UDP, vous pouvez le changer en IoAcceptor acceptor = new. NioDatagramAcceptor();

Pour libérer la connexion, vous pouvez appeler

acceptor.dispose(true)
Copier après la connexion

pour ajouter une chaîne de filtres et l'ajouter au service

// 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);
Copier après la connexion

Ce qui précède est le contenu des notes d'étude d'Apache Mina (3) - IoService , pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal