Maison  >  Article  >  Java  >  Implémentation d'une calculatrice simple sur UDP en utilisant Java Implémenter une calculatrice simple utilisant UDP en Java

Implémentation d'une calculatrice simple sur UDP en utilisant Java Implémenter une calculatrice simple utilisant UDP en Java

王林
王林avant
2023-08-27 21:33:021084parcourir

使用Java通过UDP实现简单计算器

在Java中使用UDP实现一个简单的计算器

L'Internet Protocol Suite contient tous les types de protocoles qui permettent la communication entre les appareils sur Internet. UDP est l'un des protocoles de cette suite, et sa forme complète est User Datagram Protocol. Contrairement à TCP, il n’est pas fiable et il s’agit d’un protocole sans connexion. Il n'établit aucun type de connexion avec d'autres appareils avant d'envoyer des données.

Dans cet article, nous allons développer une simple calculatrice client-serveur utilisant UDP en Java. Le client demande une opération et le serveur calcule et envoie le résultat au périphérique client.

Réseau Java

Commençons par comprendre brièvement quelques concepts de base sur les réseaux Java−

Adresse Inet

Une adresse IP est un numéro non signé de 32 ou 128 bits qui identifie de manière unique un appareil sur Internet. Il est plus facile de mémoriser le nom d'un hôte IP que l'adresse numérique. Par conséquent, nous devons utiliser la classe « InetAddress » pour l’encapsuler. Nous utilisons sa méthode intégrée "getLocalHost()" pour obtenir l'adresse IP de l'hôte local.

Datagramme

Ce sont de petits paquets contenant des données qui peuvent être transmises entre deux machines via Internet. Java implémente deux classes pour établir une connexion UDP -

La classe

DatagramSocket est utilisée pour envoyer et recevoir des paquets de datagrammes. Il détermine également la destination de ces colis. Ses méthodes intégrées ‘send()’ et ‘receive()’ sont utilisées respectivement pour envoyer et recevoir des paquets de données.

Grammaire

DatagramSocket nameOfObject = new DatagramSocket();   
Les objets de la classe

DatagramPacket stockent les données à envoyer.

Grammaire

DatagramPacket nameOfPacket = new DatagramPacket();   

Programme de calcul utilisant UDP

Programme client

Comment fonctionne le code

  • Nous commençons par importer les deux packages les plus importants nommés 'java.net', qui est utilisé pour accéder à toutes les classes liées aux réseaux Java, et 'java.io', qui est utilisé pour les flux d'entrée et de sortie. Utilisez le package ‘java.util’ pour utiliser la classe ‘Scanner’.

  • Établissez une connexion UDP et obtenez l'adresse de l'hôte local.

  • Maintenant, à l'intérieur du bloc try, nous demanderons la saisie de l'utilisateur via les méthodes 'send()' et 'receive()' de la classe 'DatagramSocket' pour demander l'opération et recevoir le résultat en conséquence.

import java.io.*;
import java.net.*;
import java.util.*;
public class ClientCalc {
   public static void main(String args[]) throws IOException {
      Scanner inp = new Scanner(System.in);
      // making UDP connection
      DatagramSocket datagsokt = new DatagramSocket();   
      // fetching the localhost address
      InetAddress addr = InetAddress.getLocalHost();
      byte strm[] = null;
      try {
         while (true) {
            System.out.println("Type 1 for Addition");
            System.out.println("Type 2 for Subtraction");
            System.out.println("Type 3 for Multiplication");
            System.out.println("Type 4 for Division");
            System.out.println("Enter your choice: ");
            String oprtr = inp.nextLine();
            // to convert the user choice to byte
            strm = new byte[256];
            strm = oprtr.getBytes();
            // creating datagram packet to send to server
            DatagramPacket packtsend = new DatagramPacket(strm, strm.length, addr, 6666);
            datagsokt.send(packtsend);
            // Type 0 for cut the connection
            if (oprtr.equals("0")) {
               break;
            }
            // to receive the result from server
            strm = new byte[256];
            DatagramPacket packtrec = new DatagramPacket(strm,   strm.length);
            datagsokt.receive(packtrec);
            // display the result 
            System.out.println("Your Result for the given operation = " + new String(strm, 0, strm.length));
         }
      }
      // to handle exception
      catch(Exception exp) {
         System.out.println(exp);
      } 
   }
}

Programme côté serveur

Comment fonctionne le code

  • Tout d'abord, établissez une connexion avec le client et définissez deux objets de la classe DatagramPacket pour envoyer et recevoir des paquets de données en utilisant les méthodes "send()" et "receive()" de la classe "DatagramSocket".

  • À l'intérieur du bloc try, nous recevons la demande du client, puis utilisons switch case pour effectuer l'opération et envoyer le résultat à l'appareil client.

Exemple

import java.io.*;
import java.net.*;
class ServerCalc {
   public static void main(String[] args) throws IOException {
      // making connection to client
      DatagramSocket datagsokt = new DatagramSocket(6666);
      byte[] strm = null;
      DatagramPacket packtrec = null;
      DatagramPacket packtsend = null;
      try {
         while (true) {
            strm = new byte[256];
            // to receive the packet from client
            packtrec = new DatagramPacket(strm, strm.length);
            datagsokt.receive(packtrec);
            String oprtr = new String(strm, 0, strm.length);
            System.out.println("Client has requested for " + oprtr );
            int data1 = 15;
            int data2 = 5;
            int tot = 0;
            char opt = oprtr.charAt(0); 
            switch(opt) {
               case '1' : 
                  tot = data1 + data2;
               break;
               case '2' :
                  tot = data1 - data2;  
               break;
               case '3' :
                  tot = data1 * data2;
               break;
               case '4' :
                  tot = data1 / data2;  
               break;
               default :
               break; 
            }
            // Converting the string result to integer 
            String res = Integer.toString(tot);
            // converting the integer to bytes
            strm = res.getBytes();
            int port = packtrec.getPort(); 
            // getting port number
            // sending final result in the form of datagram packet
            packtsend = new DatagramPacket(strm, strm.length, InetAddress.getLocalHost(), port);
            datagsokt.send(packtsend);
         }
      }
      // to handle exception
      catch(Exception exp) {
         System.out.println(exp);
      } 
   }
}

Pour exécuter les deux programmes en même temps, ouvrez les deux cmd simultanément sur votre ordinateur local. Sur la première interface cmd, compilez et exécutez le programme côté serveur, puis exécutez le programme client sur l'autre interface.

Sortie client

D:\Java Programs>java ClientCalc
Type 1 for Addition
Type 2 for Subtraction
Type 3 for Multiplication
Type 4 for Division
Enter your choice:
1
Your Result for the given operation = 20  

Sortie côté serveur

D:\Java Programs>java ServerCalc
Client has requested for 1  

Lorsque nous entrons 0, la connexion sera terminée et le programme cessera de s'exécuter.

Conclusion

Dans cet article, nous avons découvert quelques concepts de base des réseaux Java. De plus, nous avons discuté des programmes côté serveur et côté client pour une simple calculatrice utilisant UDP. Nous avons découvert comment établir une connexion entre les périphériques client et serveur à l'aide de Java.

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer