Cette fois, je vais résumer brièvement comment utiliser SocketChannel. Veuillez vous référer au flux comme suit.
--Client
- Connectez le serveur via SocketChannel
 
- Préparez un tampon de données et écrivez / lisez sur le serveur
 
- Fermer le canal de prise
 
--Serveur
- Lier l'adresse IP et le port
 
- Obtenez une instance de SocketChannel avec la méthode ServerSocketChannelImpl.accept ()
 
- Préparer un tampon de données et écrire / lire sur le client
 
- Fermez SocketChannel et ServerSocketChannel
 
Ensuite, faisons une démonstration de communication du client et du serveur à partir d'ici.
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(); } }
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:

Merci d'avoir lu jusqu'au bout.
Recommended Posts