In diesem Kapitel sprechen wir über MINAs IoService – eine Basisklasse, die alle I/O-Dienste auf dem Server und Client bereitstellt. Sie wird zum Senden und Empfangen von Nachrichten mit dem Peer, zum Verwalten von Sitzungen, Verbindungen usw. verwendet.
Es handelt sich um eine Schnittstelle, die von IoAcceptor auf der Serverseite und IoConnector auf der Clientseite implementiert wird.
Wir werden diese Schnittstelle in den folgenden Teilen vorstellen:
IoService-Einführung
IoService-Details
IoAcceptor
IoConnector
IoService-Einführung
IoService stellt grundlegende I/O-Dienste im Mina-Framework bereit und verwaltet I/O-Sitzungen. Es ist ein sehr kritischer Teil von Mina.
Wie in der obigen Abbildung erwähnt, hat IoService viele Verantwortlichkeiten:
Sitzungsverwaltung
Filterkettenverwaltung
Handler-Aufruf
Statistik Management
Listening-Management
Kommunikationsmanagement
Methoden in dieser Schnittstelle:
getTransportMetadata();
Wenn IoAcceptor oder IoConnector ausgeführt wird, gibt diese Methode übertragene Metadaten zurück , normalerweise einschließlich Name (nio, apr, txtx), Verbindungstyp (verbindungsorientiert oder verbindungslos).
addListener
Ermöglicht das Hinzufügen eines IoServiceListeners, um auf bestimmte Ereignisse zu warten
removeListener
Entfernt einen angegebenen IoserviceListener
isDisposed
Wenn der Dienst entsorgt ist, geben Sie den Status des Dienstes zurück.
isDisposed
Wenn der Dienst entsorgt wurde, geben Sie den Status des Dienstes zurück.
dispose
Wird verwendet, um alle vom Dienst angeforderten Ressourcen freizugeben. Benutzer müssen zunächst die beiden oben genannten Methoden verwenden, um zu überprüfen, ob der Dienst vollständig entsorgt wurde. Wenn Sie den Dienst herunterfahren möchten, rufen Sie unbedingt diese Methode auf
getHandler
Gibt die mit dem Dienst verknüpfte Methode zurück
setHandler
Setzen Sie die IoHandler löst das Problem, dass der Server eine Anfrage erhält. Der Handler enthält Ihre Programmlogik.
getSessionConfig
gibt die Sitzungskonfiguration zurück.
getFilterChainBuilder
gibt den Filter zurück Wenn die Filterung hinzugefügt werden muss, muss der Chain Builder hinzugefügt werden. Wenn diese Methode aufgerufen werden muss.
IoService-Details
Ioservice Diese Schnittstelle wird durch zwei wichtige Klassen in MINA implementiert: IoAcceptor und IoConnector. Auf der Serverseite müssen Sie IoAcceptor und auf der Clientseite IoConnector auswählen.
IoAcceptor
In MINA gibt es einige bereits implementierte Klassen:
NioSocketAcceptor: der nicht-blockierende Socket-Transport-IoAcceptor
NioDatagramAcceptor: der nicht-blockierende UDP-Transport-IoAcceptor
AprSocketAcceptor: der blockierende Socket-Transport-IoAcceptor, basierend auf APR
VmPipeSocketAcceptor: der In-VM-IoAcceptor
Wählen Sie den IoAcceptor, den Sie benötigen.
Das Bild unten zeigt die IoAcceptor-Klasse und -Schnittstelle
IoConnector
NioSocketConnector: der nicht blockierende Socket-Transport IoConnector
NioDatagramConnector : der nicht blockierende UDP-Transport-IoConnector
AprSocketConnector: der blockierende Socket-Transport-IoConnector, basierend auf APR
ProxyConnector: ein IoConnector, der Proxy-Unterstützung bietet
SerialConnector: ein IoConnector für einen seriellen Transport
VmPipeConnector: der in -VM IoConnector
Das Folgende ist ein Beispiel als Zusammenfassung:
Zum Beispiel, wenn Sie erstellen möchten Als TCP-Server können Sie Code ähnlich dem folgenden schreiben:
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..."); }
Auf diese Weise wird ein TCP-Server erstellt. Wenn Sie einen UDP-Server erstellen möchten, können Sie ihn in IoAcceptor-Akzeptor = neu ändern NioDatagramAcceptor();
Um die Verbindung freizugeben, können Sie
acceptor.dispose(true)
aufrufen, um eine Filterkette hinzuzufügen und sie dem Dienst hinzuzufügen
// 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);
Das Obige ist Der Inhalt der Apache Mina-Studiennotizen (3) - IoService. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (m.sbmmt.com)!