Zusammenfassung der Java-Kommunikations-API (3) Verwendung von SocketChannel

1. 1. Einführung

Dieses Mal werde ich kurz zusammenfassen, wie SocketChannel verwendet wird. Bitte beziehen Sie sich auf den Ablauf wie folgt.

--Klient

  1. Verbinden Sie den Server über SocketChannel
  1. Bereiten Sie einen Datenpuffer vor und schreiben / lesen Sie auf den Server
  1. Schließen Sie den Socket-Kanal

--Server

  1. Binden Sie die iP-Adresse und den Anschluss
  1. Rufen Sie eine Instanz von SocketChannel mit der ServerSocketChannelImpl.accept () -Methode ab
  1. Bereiten Sie einen Datenpuffer vor und schreiben / lesen Sie in den Client
  1. Schließen Sie SocketChannel und ServerSocketChannel

Lassen Sie uns dann von hier aus eine Kommunikationsdemo von Client und Server erstellen.

2. Klient

Der Quellcode lautet wie folgt.

package socketchannel;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel;

public class WebClient {
  public static void main(String[] args) throws IOException {

// 1. Erstellen wir eine SocketChannel-Instanz mit der SocketChannel open () -Methode SocketChannel socketChannel = SocketChannel.open();

// 2. Stellen Sie eine Verbindung zum Server her socketChannel.connect(new InetSocketAddress("127.0.0.1", 3333));

// 3. Bereiten Sie die Daten vor, die an den Server gesendet werden sollen ByteBuffer writeBuffer = ByteBuffer.allocate(128); writeBuffer.put("hello WebServer this is from WebClient".getBytes()); writeBuffer.flip(); socketChannel.write(writeBuffer); ByteBuffer readBuffer = ByteBuffer.allocate(128); socketChannel.read(readBuffer); StringBuilder stringBuffer=new StringBuilder();

// 4. Daten vom Server empfangen readBuffer.flip(); while (readBuffer.hasRemaining()) { stringBuffer.append((char) readBuffer.get()); } System.out.println ("Nachricht vom Server:" + stringBuffer); socketChannel.close(); } }

3. 3. Server

Der Quellcode auf der Serverseite lautet wie folgt.

package socketchannel;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;

public class WebServer {
public static void main(String args[]) throws IOException {
    try {

// 1. Erstellen wir eine Instanz von ServerSocketChannel mit der open () -Methode von ServerSocketChannel ServerSocketChannel ssc = ServerSocketChannel.open();

// 2. IP und Port binden ssc.socket().bind(new InetSocketAddress("127.0.0.1", 3333));

//ServerSocketChannelImplのaccept()メソッドでSocketChannelインスタンスをもらってクライアントへの書き読み SocketChannel socketChannel = ssc.accept();

// 3. Bereiten Sie die zu exportierenden Daten vor ByteBuffer writeBuffer = ByteBuffer.allocate(128); writeBuffer.put("hello WebClient this is from WebServer".getBytes()); writeBuffer.flip(); socketChannel.write(writeBuffer); ByteBuffer readBuffer = ByteBuffer.allocate(128);

//// 4. Bereiten Sie die zu lesenden Daten vor socketChannel.read(readBuffer); StringBuilder stringBuffer=new StringBuilder();

        readBuffer.flip();
        while (readBuffer.hasRemaining()) {
            stringBuffer.append((char) readBuffer.get());
        }

System.out.println ("Daten vom Client empfangen:" + stringBuffer); socketChannel.close(); ssc.close(); } catch (IOException e) { e.printStackTrace(); } } }

Wenn Sie die obige Demo ausführen und sie funktioniert, sieht das Ergebnis folgendermaßen aus: サーバー

4. Schließlich

Vielen Dank für das Lesen bis zum Ende.

Recommended Posts

Zusammenfassung der Java-Kommunikations-API (3) Verwendung von SocketChannel
Zusammenfassung der Java-Kommunikations-API (1) Verwendung von Socket
Zusammenfassung der Java-Kommunikations-API (2) Verwendung von HttpUrlConnection
[Java] [Maven3] Zusammenfassung der Verwendung von Maven3
[java] Zusammenfassung des Umgangs mit char
[java] Zusammenfassung des Umgangs mit Zeichenketten
Verwendung der Java-API mit Lambda-Ausdrücken
Verwendung der Ketten-API
[Java] Verwendung von Map
Verwendung von Java Optional
Verwendung der Java-Klasse
[Java] Verwendung von removeAll ()
Verwendung von Java Map
Verwendung von Java-Variablen
Zusammenfassung der Implementierung von Standardargumenten in Java
Verwendung von HttpClient (Get) von Java
Verwendung von HttpClient (Post) von Java
[Java] Verwendung der Join-Methode
Verwendung von setDefaultCloseOperation () von JFrame
[Verarbeitung × Java] Verwendung von Variablen
[JavaFX] [Java8] Verwendung von GridPane
Verwendung von Klassenmethoden [Java]
[Java] Verwendung von List [ArrayList]
Wie verwende ich Klassen in Java?
[Verarbeitung × Java] Verwendung von Arrays
Verwendung von Java-Lambda-Ausdrücken
[Java] Verwendung der Math-Klasse
Verwendung des Java-Aufzählungstyps
Verwendung des mit Tensorflow 2.0 trainierten Modells mit Kotlin / Java
Verwendung von JSON-Daten in der WebSocket-Kommunikation (Java, JavaScript)
[Ein Muss für einen Java-Ingenieurlehrling] Verwendung der Stream-API
Aufrufen und Verwenden der API in Java (Spring Boot)
Zusammenfassung der Verwendung des im IE festgelegten Proxy-Sets bei der Verbindung mit Java
So erstellen Sie eine Java-Kalenderzusammenfassung
Mehrsprachige Unterstützung für Java Verwendung des Gebietsschemas
[Java] Verwendung der File-Klasse
Verwendung der Submit-Methode (Java Silver)
Zusammenfassung zum Schreiben von Anmerkungsargumenten
[Leicht verständliche Erklärung! ] Verwendung der Java-Instanz
Studieren der Verwendung des Konstruktors (Java)
[Verarbeitung × Java] Verwendung der Schleife
Verwendung und Definition von Java-Klassen, Importieren
[Leicht verständliche Erklärung! ] Verwendung des Java-Polymorphismus
[Verarbeitung × Java] Verwendung der Klasse
Verwendung der Java Scanner-Klasse (Hinweis)
[Verarbeitung × Java] Verwendung der Funktion
[Leicht verständliche Erklärung! ] Verwendung von ArrayList [Java]
[Java] Verwendung der Calendar-Klasse
[Java] Erfahren Sie, wie Sie Optional richtig verwenden
[Leicht verständliche Erklärung! ] Verwendung von Java-Überladung
try-catch-finally Ausnahmebehandlung Verwendung von Java
[Leicht verständliche Erklärung! ] Verwendung der Java-Kapselung
[Java] So verwenden Sie Teilzeichenfolgen, um einen Teil einer Zeichenfolge auszuschneiden