Maison Java javaDidacticiel Utilisation de Netty pour la communication TCP dans le développement d'API Java

Utilisation de Netty pour la communication TCP dans le développement d'API Java

Jun 18, 2023 pm 11:34 PM
netty java api tcp通信

Utiliser Netty pour la communication TCP dans le développement d'API Java

Dans le développement de logiciels modernes, la communication réseau est devenue un élément essentiel. Netty est un framework Java pour un développement rapide et efficace d'applications réseau hautes performances. Il fournit une API facile à utiliser qui englobe Java NIO et d'autres bibliothèques réseau. Dans le développement d'API Java, la supériorité de Netty peut se refléter dans les aspects suivants :

  1. Hautes performances

Les applications de Netty sont optimisées et rationalisées, avec une grande performance. Sa conception interne utilise un petit nombre d'objets pour une allocation de mémoire très efficace. Cela signifie qu'il a une faible latence et des capacités de débit élevées, ce qui le rend adapté aux applications qui doivent transférer des données à des vitesses élevées.

  1. API facile à utiliser

L'API de Netty est conçue pour que les développeurs puissent l'utiliser en très peu de temps. Son API simple permet aux développeurs de comprendre et de mettre en œuvre rapidement des communications réseau efficaces. De plus, Netty propose une documentation claire et des exemples riches, permettant aux débutants de démarrer facilement.

  1. Flexibilité

Netty a une excellente flexibilité et est hautement adaptable dans les communications réseau. Il prend en charge plusieurs protocoles de transport, tels que TCP, UDP, etc., ainsi que presque tous les protocoles de couche application, tels que HTTP, WebSocket, SMTP, etc. Ceci est essentiel pour les applications dont les exigences changent.

Utiliser Netty pour la communication TCP

Dans cet article, nous nous concentrerons sur la méthode d'implémentation de l'utilisation de Netty pour la communication TCP dans le développement d'API Java. Ci-dessous, nous expliquerons comment utiliser Netty pour développer un serveur et un client TCP simples.

  1. Create Maven Project

Tout d'abord, nous devons créer un projet Maven pour construire notre application. Nous devons ajouter les dépendances suivantes dans pom.xml :

<dependencies>
    <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-all</artifactId>
        <version>4.1.42.Final</version>
    </dependency>
</dependencies>
Copier après la connexion
  1. Implementation the server

Ensuite, nous créons une classe Java pour implémenter notre serveur. Nous devons d’abord implémenter la classe ChannelInitializer, qui est utilisée pour initialiser le serveur. Nous devons implémenter une classe ChannelInboundHandlerAdapter dans cette classe pour gérer les données entrantes :

public class ServerInitializer extends ChannelInitializer<SocketChannel> {
    @Override
    protected void initChannel(SocketChannel channel) throws Exception {
        ChannelPipeline pipeline = channel.pipeline();
        pipeline.addLast("decoder", new StringDecoder());
        pipeline.addLast("encoder", new StringEncoder());
        pipeline.addLast("handler", new ServerHandler());
    }
}

public class ServerHandler extends ChannelInboundHandlerAdapter {
    @Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
        String message = (String) msg;
        System.out.println("Server received: " + message);

        ctx.write(message);
    }

    @Override
    public void channelReadComplete(ChannelHandlerContext ctx) throws Exception {
        ctx.flush();
    }
}
Copier après la connexion

Dans le code ci-dessus, nous utilisons StringDecoder et StringEncoder pour ajouter des processeurs au ChannelPipeline qui encodent les messages au format chaîne de caractères. Ensuite, nous ajouterons une classe ChannelInboundHandlerAdapter pour gérer les messages. Dans ce cours, nous imprimerons simplement le message reçu et le transmettrons au client.

Ensuite, nous devons implémenter le code de démarrage du serveur. Nous pouvons implémenter un simple serveur TCP comme celui-ci :

public class TcpServer {
    private static final int PORT = 8080;

    public static void main(String[] args) throws Exception {
        EventLoopGroup group = new NioEventLoopGroup();
        try {
            ServerBootstrap bootstrap = new ServerBootstrap();
            bootstrap.group(group)
                    .channel(NioServerSocketChannel.class)
                    .localAddress(new InetSocketAddress(PORT))
                    .childHandler(new ServerInitializer());

            ChannelFuture future = bootstrap.bind().sync();
            System.out.println("Server started and listen on " + future.channel().localAddress());
            future.channel().closeFuture().sync();
        } finally {
            group.shutdownGracefully().sync();
        }
    }
}
Copier après la connexion

Dans le code ci-dessus, nous créons un objet EventLoopGroup qui gérera les événements réseau. Nous utilisons la classe NioEventLoopGroup pour implémenter les connexions E/S. Nous le déléguons ensuite à ServerBootstrap, qui est une classe de démarrage de serveur, et créons un canal de type NioServerSocketChannel (le canal que le serveur écoute). Enfin, nous lions le numéro de port et démarrons le serveur.

  1. Implémentation du client

Maintenant, nous devons écrire le code client pour nous connecter au serveur. Semblable à l'implémentation du serveur, nous devons implémenter la classe ChannelInboundHandlerAdapter, qui est responsable du traitement des messages et de l'établissement d'une connexion pour la communication entre le client et le serveur.

public class TcpClientHandler extends ChannelInboundHandlerAdapter {
    @Override
    public void channelActive(ChannelHandlerContext ctx) throws Exception {
        String message = "Hello, Netty!";
        ctx.write(message);
    }

    @Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
        String message = (String) msg;
        System.out.println("Client received: " + message);
    }

    @Override
    public void channelReadComplete(ChannelHandlerContext ctx) throws Exception {
        ctx.flush();
    }
}
Copier après la connexion

Comme mentionné ci-dessus, nous avons implémenté la classe ChannelInboundHandlerAdapter. Dans cette classe, nous envoyons un message au serveur dans la méthode ChannelActive(). Nous imprimons ensuite le message reçu du serveur dans la méthode channelRead().

Ensuite, nous devons implémenter le code de démarrage du client. Nous pouvons implémenter un simple client TCP comme suit :

public class TcpClient {
    private static final String HOST = "127.0.0.1";
    private static final int PORT = 8080;

    public static void main(String[] args) throws Exception {
        EventLoopGroup group = new NioEventLoopGroup();
        try {
            Bootstrap bootstrap = new Bootstrap();
            bootstrap.group(group)
                    .channel(NioSocketChannel.class)
                    .remoteAddress(new InetSocketAddress(HOST, PORT))
                    .handler(new ChannelInitializer<SocketChannel>() {
                        @Override
                        protected void initChannel(SocketChannel channel) throws Exception {
                            ChannelPipeline pipeline = channel.pipeline();
                            pipeline.addLast("decoder", new StringDecoder());
                            pipeline.addLast("encoder", new StringEncoder());
                            pipeline.addLast("handler", new TcpClientHandler());
                        }
                    });

            ChannelFuture future = bootstrap.connect().sync();
            System.out.println("Client connected to " + future.channel().remoteAddress());

            future.channel().closeFuture().sync();
        } finally {
            group.shutdownGracefully().sync();
        }
    }
}
Copier après la connexion

Dans le code ci-dessus, nous avons créé un objet de classe Bootstrap, qui est une classe de démarrage client. Nous créons un canal de type NioSocketChannel (le canal qui communique avec le serveur). Nous avons également utilisé l'adresse IP et le numéro de port de l'hôte distant pour nous connecter au serveur.

Enfin, on se connecte au serveur et on ferme le client une fois terminé. Le code est simple et tous les détails de communication sont gérés par Netty.

Résumé

Dans le développement d'API Java, utiliser Netty pour la communication TCP est un choix très pratique. En effet, Netty fournit une API facile à utiliser et d'excellentes performances, ce qui la rend adaptée aux applications nécessitant une communication rapide et un débit élevé. Dans cet article, nous montrons comment implémenter un serveur et un client TCP simples à l'aide de Netty, et nous espérons que cela vous aidera à mieux comprendre les avantages et les utilisations de Netty.

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Utilisation d'Imgscalr pour le traitement d'images dans le développement d'API Java Utilisation d'Imgscalr pour le traitement d'images dans le développement d'API Java Jun 18, 2023 am 08:40 AM

Utilisation d'Imgscalr pour le traitement d'images dans le développement d'API Java Avec le développement de l'Internet mobile et la popularité de la publicité sur Internet, les images sont devenues un élément indispensable dans de nombreuses applications. Qu'il s'agisse d'afficher des produits, de créer des cercles sociaux ou d'améliorer l'expérience utilisateur, les images jouent un rôle important. Dans les applications, il est souvent nécessaire d'effectuer des opérations telles que le recadrage, la mise à l'échelle et la rotation des images, ce qui nécessite l'utilisation de certains outils de traitement d'image. Imgscalr est une image très couramment utilisée dans le développement d'API Java.

Quels sont les sites Web à interface API gratuite ? Quels sont les sites Web à interface API gratuite ? Jan 05, 2024 am 11:33 AM

Site Web d'interface API gratuite : 1. UomgAPI : une plate-forme qui fournit des services API gratuits stables et rapides, avec plus de 100 interfaces API ; 2. free-api : fournit plusieurs interfaces API gratuites ; 3. API JSON : fournit une interface API de données gratuite ; . AutoNavi Open Platform : fournit des interfaces API liées aux cartes ; 5. Reconnaissance faciale Face++ : fournit des interfaces API liées à la reconnaissance faciale ; 6. Speed ​​​​Data : fournit plus d'une centaine d'interfaces API gratuites, adaptées à divers besoins dans le cas des données ; sources ; 7. Données agrégées, etc.

Comment implémenter le code de vérification d'image dans le développement d'API Java Comment implémenter le code de vérification d'image dans le développement d'API Java Jun 18, 2023 am 09:22 AM

Avec le développement rapide de la technologie Internet, afin de garantir la sécurité du système, les codes de vérification sont devenus un élément essentiel de chaque système. Parmi eux, le code de vérification d’image est privilégié par les développeurs en raison de sa facilité d’utilisation et de sa sécurité. Cet article présentera la méthode spécifique d'implémentation du code de vérification d'image dans le développement JavaAPI. 1. Qu'est-ce que le code de vérification d'image ? Le code de vérification d'image est un moyen de vérification homme-machine au moyen d'images. Il s'agit généralement d'une combinaison aléatoire d'images contenant des chiffres, des lettres, des symboles, etc., ce qui améliore la sécurité du système. Son principe de fonctionnement comprend

Comment écrire du code de communication Modbus TCP en utilisant PHP Comment écrire du code de communication Modbus TCP en utilisant PHP Jul 18, 2023 am 10:17 AM

Comment utiliser PHP pour écrire du code de communication ModbusTCP Modbus est un protocole de communication utilisé dans le domaine de l'automatisation industrielle et est largement utilisé pour la transmission de données entre les automates programmables (automates programmables) et d'autres équipements d'automatisation. ModbusTCP est une variante du protocole Modbus qui utilise la pile de protocoles TCP/IP comme couche de transport pour permettre la communication à distance sur le réseau. Cet article explique comment écrire du code de communication ModbusTCP à l'aide de PHP et fournit quelques exemples de code. Installer PHP

Utilisation de GreenMail pour tester les e-mails dans le développement d'API Java Utilisation de GreenMail pour tester les e-mails dans le développement d'API Java Jun 18, 2023 pm 02:22 PM

L'API Java est un langage de développement largement utilisé pour développer des applications Web, des applications de bureau, des applications mobiles, etc. Dans le développement JavaAPI, les tests de courrier électronique sont essentiels car la communication par courrier électronique est l'une des principales méthodes de communication dans la société moderne. Par conséquent, les développeurs doivent utiliser certains outils pour tester si leurs e-mails fonctionnent correctement. Cet article présentera un logiciel open source appelé GreenMail, qui peut être utilisé dans le développement JavaAPI pour tester les e-mails. Vert

Quels sont les protocoles courants pour la programmation réseau Java ? Quels sont les protocoles courants pour la programmation réseau Java ? Apr 15, 2024 am 11:33 AM

Les protocoles couramment utilisés dans la programmation réseau Java incluent : TCP/IP : utilisé pour une transmission de données fiable et une gestion des connexions. HTTP : utilisé pour la transmission de données Web. HTTPS : version sécurisée de HTTP qui utilise le cryptage pour transmettre des données. UDP : Pour un transfert de données rapide mais instable. JDBC : utilisé pour interagir avec des bases de données relationnelles.

Développement Java : comment utiliser Netty pour une programmation réseau haute performance Développement Java : comment utiliser Netty pour une programmation réseau haute performance Sep 20, 2023 pm 02:09 PM

Développement Java : Comment utiliser Netty pour une programmation réseau hautes performances Résumé : Netty est un cadre de programmation réseau hautes performances et asynchrone piloté par événements qui simplifie le processus de développement d'applications réseau. Cet article présentera les principales fonctionnalités de Netty et comment utiliser Netty pour une programmation réseau hautes performances. Dans le même temps, nous fournirons également des exemples de code Java spécifiques pour aider les lecteurs à mieux comprendre et appliquer Netty. 1. Introduction à Netty Netty est un boîtier de programmation réseau basé sur JavaNIO

JAX-RS contre Spring MVC : une bataille entre les géants RESTful JAX-RS contre Spring MVC : une bataille entre les géants RESTful Feb 29, 2024 pm 05:16 PM

Introduction Les API RESTful font désormais partie intégrante des applications WEB modernes. Ils fournissent une approche standardisée pour créer et utiliser des services Web, améliorant ainsi la portabilité, l'évolutivité et la facilité d'utilisation. Dans l'écosystème Java, JAX-RS et springmvc sont les deux frameworks les plus populaires pour créer des API RESTful. Cet article examinera en profondeur les deux frameworks, en comparant leurs fonctionnalités, avantages et inconvénients pour vous aider à prendre une décision éclairée. JAX-RS : JAX-RSAPI JAX-RS (JavaAPI pour RESTful Web Services) est un standard JAX-RSAPI développé par JavaEE pour le développement de REST.

See all articles