Maison  >  Article  >  Java  >  Quels outils de communication réseau courants sont inclus dans les bibliothèques de fonctions Java ?

Quels outils de communication réseau courants sont inclus dans les bibliothèques de fonctions Java ?

WBOY
WBOYoriginal
2024-05-02 21:15:01763parcourir

La bibliothèque de fonctions Java fournit une série d'outils de communication réseau, notamment le package java.net (fournissant des classes de réseau de base), le package java.nio (fournissant une API d'E/S hautes performances) et d'autres outils utiles tels que Apache HttpClient. , Netty et gRPC Java). Ces outils permettent aux développeurs de créer des applications client et serveur, d'envoyer et de recevoir facilement des données et de gérer les connexions réseau.

Java 函数库中都有哪些常用网络通信工具?

Outils de communication réseau courants dans la bibliothèque Java

Le langage de programmation Java fournit une série de bibliothèques de fonctions et de classes puissantes pour créer des applications de communication réseau fiables et efficaces. Ces outils permettent aux développeurs de communiquer facilement entre clients et serveurs, d'envoyer et de recevoir des données et de gérer les connexions réseau. Voici quelques-uns des outils de communication réseau les plus couramment utilisés dans la bibliothèque de fonctions Java :

Package java.net

Le package java.net contient les principales classes et interfaces de communication réseau fournies par Java. plate-forme. Il prend en charge les sockets TCP/IP, les URL, les URI et d'autres infrastructures réseau. java.net 包包含 Java 平台提供的核心网络通信类和接口。它为 TCP/IP 套接字、URL、URI 和其他网络基础设施提供了支持。

  • Socket:表示网络通信中的端点,可用于发送和接收数据。
  • ServerSocket:表示服务器端套接字,用于侦听传入连接。
  • URL:Uniform Resource Locator,指定网络资源的地址。
  • URI:Uniform Resource Identifier,用于唯一标识网络资源。

实战案例:使用 Socket 创建简单客户端和服务器

// 客户端
import java.net.*;

public class SocketClient {

    public static void main(String[] args) throws Exception {
        // 创建 Socket 并连接到服务器
        Socket socket = new Socket("localhost", 8080);

        // 获取输出流并发送消息
        DataOutputStream out = new DataOutputStream(socket.getOutputStream());
        out.writeUTF("Hello from client!");

        // 关闭输出流和 Socket
        out.close();
        socket.close();
    }
}

// 服务器
import java.net.*;

public class SocketServer {

    public static void main(String[] args) throws Exception {
        // 创建 ServerSocket 并侦听连接
        ServerSocket serverSocket = new ServerSocket(8080);

        while (true) {
            // 接受客户端连接
            Socket clientSocket = serverSocket.accept();

            // 获取输入流并读取消息
            DataInputStream in = new DataInputStream(clientSocket.getInputStream());
            String message = in.readUTF();

            System.out.println("Received message: " + message);

            // 关闭输入流和 Socket
            in.close();
            clientSocket.close();
        }
    }
}

java.nio 包

java.nio

  • Socket : représente un point final dans la communication réseau et peut être utilisé pour envoyer et recevoir des données.
  • ServerSocket : représente un socket côté serveur utilisé pour écouter les connexions entrantes.
  • URL : Uniform Resource Locator, spécifiant l'adresse d'une ressource réseau.
URI

 : Uniform Resource Identifier, utilisé pour identifier de manière unique les ressources du réseau.

Cas pratique : Utiliser Socket pour créer des clients et des serveurs simples

// 服务器
import java.net.*;
import java.nio.*;
import java.nio.channels.*;

public class NonBlockingServerSocket {

    public static void main(String[] args) throws Exception {
        // 创建 ServerSocketChannel 并绑定到端口
        ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();
        serverSocketChannel.bind(new InetSocketAddress(8080));
        serverSocketChannel.configureBlocking(false);

        // 创建 Selector 并注册 ServerSocketChannel
        Selector selector = Selector.open();
        serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT);

        while (true) {
            // 侦听可用的选择键
            int readyKeys = selector.select();

            if (readyKeys == 0) {
                continue;
            }

            // 处理可用的选择键
            Iterator<SelectionKey> keys = selector.selectedKeys().iterator();
            while (keys.hasNext()) {
                SelectionKey key = keys.next();
                keys.remove();

                // 处理可接受的键
                if (key.isAcceptable()) {
                    SocketChannel clientSocketChannel = serverSocketChannel.accept();
                    clientSocketChannel.configureBlocking(false);
                    clientSocketChannel.register(selector, SelectionKey.OP_READ);
                }

                // 处理可读的键
                else if (key.isReadable()) {
                    // ...
                }
            }
        }
    }
}

    Package java.nio
  • Le package java.nio fournit un package non bloquant de bas niveau et hautes performances Package d'E/S O API, utilisé pour gérer la communication réseau. Il fournit les classes principales suivantes :
  • ByteBuffer
  •  : Représente un tampon contenant des données binaires brutes.
  • SelectableChannel
  • : Représente le canal IO qui peut être intéressé par le sélecteur.
  • Selector
  •  : Utilisé pour enregistrer et sélectionner les chaînes lisibles, inscriptibles ou acceptables.
🎜🎜🎜Cas pratique : Écriture d'un serveur non bloquant à l'aide de Selector🎜🎜rrreee🎜🎜Autres outils de communication réseau utiles🎜🎜🎜🎜🎜Apache HttpClient🎜 : Une bibliothèque client HTTP riche en fonctionnalités pour envoyer et recevoir des requêtes HTTP. 🎜🎜🎜Apache HttpClient Async🎜 : Une version non bloquante d'Asynchronous HttpClient qui prend en charge la communication HTTP asynchrone. 🎜🎜🎜Netty🎜 : un cadre de programmation réseau hautes performances basé sur des événements qui prend en charge plusieurs protocoles, notamment TCP, UDP et HTTP. 🎜🎜🎜gRPC Java🎜 : un framework pour créer et servir des appels de procédure à distance basés sur protobuf. 🎜🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
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