Résumé de l'API de communication Java (3) Comment utiliser SocketChannel

1. 1. introduction

Cette fois, je vais résumer brièvement comment utiliser SocketChannel. Veuillez vous référer au flux comme suit.

--Client

  1. Connectez le serveur via SocketChannel
  1. Préparez un tampon de données et écrivez / lisez sur le serveur
  1. Fermer le canal de prise

--Serveur

  1. Lier l'adresse IP et le port
  1. Obtenez une instance de SocketChannel avec la méthode ServerSocketChannelImpl.accept ()
  1. Préparer un tampon de données et écrire / lire sur le client
  1. Fermez SocketChannel et ServerSocketChannel

Ensuite, faisons une démonstration de communication du client et du serveur à partir d'ici.

2. client

Le code source est le suivant.

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. Créons une instance SocketChannel avec la méthode SocketChannel open () SocketChannel socketChannel = SocketChannel.open();

// 2. Connectez-vous au serveur socketChannel.connect(new InetSocketAddress("127.0.0.1", 3333));

// 3. Préparez les données à envoyer au serveur 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. Recevoir les données du serveur readBuffer.flip(); while (readBuffer.hasRemaining()) { stringBuffer.append((char) readBuffer.get()); } System.out.println ("Message du serveur:" + stringBuffer); socketChannel.close(); } }

3. 3. serveur

Le code source côté serveur est le suivant.

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. Créons une instance de ServerSocketChannel avec la méthode open () de ServerSocketChannel ServerSocketChannel ssc = ServerSocketChannel.open();

// 2. Lier l'IP et le port ssc.socket().bind(new InetSocketAddress("127.0.0.1", 3333));

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

// 3. Préparez les données à exporter 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. Préparez les données à lire socketChannel.read(readBuffer); StringBuilder stringBuffer=new StringBuilder();

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

System.out.println ("Recevoir les données du client:" + stringBuffer); socketChannel.close(); ssc.close(); } catch (IOException e) { e.printStackTrace(); } } }

Eh bien, si vous exécutez la démo ci-dessus et que cela fonctionne, vous obtiendrez les résultats suivants: サーバー

4. Enfin

Merci d'avoir lu jusqu'au bout.

Recommended Posts

Résumé de l'API de communication Java (3) Comment utiliser SocketChannel
Résumé de l'API de communication Java (1) Comment utiliser Socket
Résumé de l'API de communication Java (2) Comment utiliser HttpUrlConnection
[Java] [Maven3] Résumé de l'utilisation de Maven3
[java] Résumé de la gestion des caractères
[java] Résumé de la gestion des chaînes de caractères
Comment utiliser l'API Java avec des expressions lambda
Comment utiliser l'API Chain
[Java] Comment utiliser Map
Comment utiliser java Facultatif
Comment utiliser la classe Java
[Java] Comment utiliser removeAll ()
Comment utiliser Java Map
Comment utiliser les variables Java
Résumé de la mise en œuvre des arguments par défaut en Java
Comment utiliser HttpClient de Java (Get)
Comment utiliser HttpClient de Java (Post)
[Java] Comment utiliser la méthode de jointure
Comment utiliser setDefaultCloseOperation () de JFrame
[Traitement × Java] Comment utiliser les variables
[JavaFX] [Java8] Comment utiliser GridPane
Comment utiliser les méthodes de classe [Java]
[Java] Comment utiliser List [ArrayList]
Comment utiliser les classes en Java?
[Traitement × Java] Comment utiliser les tableaux
Comment utiliser les expressions Java lambda
[Java] Comment utiliser la classe Math
Comment utiliser le type enum Java
Comment utiliser le modèle entraîné Tensorflow 2.0 avec Kotlin / Java
Comment utiliser les données JSON dans la communication WebSocket (Java, JavaScript)
[À voir absolument pour l'apprenti ingénieur Java] Comment utiliser l'API Stream
Comment appeler et utiliser l'API en Java (Spring Boot)
Résumé de l'utilisation du jeu de proxy dans IE lors de la connexion avec Java
Comment créer un résumé de calendrier Java
Prise en charge multilingue de Java Comment utiliser les paramètres régionaux
[Java] Comment utiliser la classe File
Comment utiliser la méthode de soumission (Java Silver)
Résumé de l'écriture des arguments d'annotation
[Explication facile à comprendre! ] Comment utiliser l'instance Java
Etudier comment utiliser le constructeur (java)
[Traitement × Java] Comment utiliser la boucle
Comment utiliser et définir les classes Java, importer
[Explication facile à comprendre! ] Comment utiliser le polymorphisme Java
[Traitement × Java] Comment utiliser la classe
Comment utiliser la classe Java Scanner (Remarque)
[Traitement × Java] Comment utiliser la fonction
[Explication facile à comprendre! ] Comment utiliser ArrayList [Java]
[Java] Comment utiliser la classe Calendar
[Java] Découvrez comment utiliser correctement Optional
[Explication facile à comprendre! ] Comment utiliser la surcharge Java
gestion des exceptions try-catch-finally Comment utiliser java
[Explication facile à comprendre! ] Comment utiliser l'encapsulation Java
[Java] Comment utiliser une sous-chaîne pour découper une partie d'une chaîne de caractères