Heim > Java > javaLernprogramm > Hauptteil

Implementierung eines einfachen Rechners über UDP mit Java Implementieren Sie einen einfachen Rechner mit UDP in Java

王林
Freigeben: 2023-08-27 21:33:02
nach vorne
1102 Leute haben es durchsucht

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

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

Die Internet Protocol Suite enthält alle Arten von Protokollen, die die Kommunikation zwischen Geräten über das Internet ermöglichen. UDP ist eines der Protokolle dieser Suite und seine vollständige Form ist User Datagram Protocol. Im Gegensatz zu TCP ist es unzuverlässig und ein verbindungsloses Protokoll. Es stellt keinerlei Verbindung zu anderen Geräten her, bevor Daten gesendet werden.

In diesem Artikel entwickeln wir einen einfachen Client-Server-Rechner mit UDP in Java. Der Client fordert eine Operation an, und der Server berechnet das Ergebnis und sendet es an das Client-Gerät.

Java-Netzwerk

Lassen Sie uns zunächst kurz einige grundlegende Konzepte zum Java-Netzwerk verstehen –

Inet-Adresse

Eine IP-Adresse ist eine 32-Bit- oder 128-Bit-Zahl ohne Vorzeichen, die ein Gerät im Internet eindeutig identifiziert. Es ist einfacher, sich den Namen eines IP-Hosts zu merken als die numerische Adresse. Daher müssen wir die Klasse „InetAddress“ verwenden, um es zu kapseln. Wir verwenden die integrierte Methode „getLocalHost()“, um die IP-Adresse des lokalen Hosts abzurufen.

Datagramm

Es handelt sich dabei um kleine Datenpakete, die über das Internet zwischen zwei Computern ausgetauscht werden können. Java implementiert zwei Klassen zum Herstellen einer UDP-Verbindung -

Die Klasse

DatagramSocket wird zum Senden und Empfangen von Datagrammpaketen verwendet. Es bestimmt auch das Ziel dieser Pakete. Seine integrierten Methoden ‘send()‘ und ‘receive()‘ werden zum Senden bzw. Empfangen von Datenpaketen verwendet.

Grammatik

DatagramSocket nameOfObject = new DatagramSocket();   
Nach dem Login kopieren
Objekte der Klasse

DatagramPacket speichern die zu sendenden Daten.

Grammatik

DatagramPacket nameOfPacket = new DatagramPacket();   
Nach dem Login kopieren

Rechnerprogramm mit UDP

Kundenprogramm

So funktioniert der Code

  • Wir beginnen mit dem Import der beiden wichtigsten Pakete namens ‘java.net‘, das für den Zugriff auf alle Klassen im Zusammenhang mit Java-Netzwerken verwendet wird, und ‘java.io‘, das für Eingabe- und Ausgabestreams verwendet wird. Verwenden Sie das Paket „java.util“, um die Klasse „Scanner“ zu verwenden.

  • Stellen Sie eine UDP-Verbindung her und rufen Sie die lokale Hostadresse ab.

  • Jetzt fordern wir innerhalb des Try-Blocks Benutzereingaben über die Methoden „send()“ und „receive()“ der Klasse „DatagramSocket“ an, um den Vorgang anzufordern und das Ergebnis entsprechend zu empfangen.

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);
      } 
   }
}
Nach dem Login kopieren

Serverseitiges Programm

So funktioniert der Code

  • Stellen Sie zunächst eine Verbindung mit dem Client her und definieren Sie zwei Objekte der Klasse DatagramPacket zum Senden und Empfangen von Datenpaketen mithilfe der Methoden „send()“ und „receive()“ der Klasse „DatagramSocket“.

  • Innerhalb des Try-Blocks empfangen wir die Anfrage vom Client und verwenden dann den Switch Case, um den Vorgang auszuführen und das Ergebnis an das Client-Gerät zu senden.

Beispiel

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);
      } 
   }
}
Nach dem Login kopieren

Um beide Programme gleichzeitig auszuführen, öffnen Sie beide cmds gleichzeitig auf Ihrem lokalen Computer. Kompilieren Sie auf der ersten cmd-Schnittstelle das serverseitige Programm, führen Sie es aus und führen Sie dann das Client-Programm auf der anderen Schnittstelle aus.

Client-Ausgabe

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  
Nach dem Login kopieren

Serverseitige Ausgabe

D:\Java Programs>java ServerCalc
Client has requested for 1  
Nach dem Login kopieren

Wenn wir 0 eingeben, wird die Verbindung beendet und das Programm wird nicht mehr ausgeführt.

Fazit

In diesem Artikel haben wir einige grundlegende Konzepte des Java-Netzwerks kennengelernt. Darüber hinaus haben wir serverseitige und clientseitige Programme für einen einfachen Taschenrechner mit UDP besprochen. Wir haben herausgefunden, wie man mit Java eine Verbindung zwischen Client- und Servergeräten herstellt.

Das obige ist der detaillierte Inhalt vonImplementierung eines einfachen Rechners über UDP mit Java Implementieren Sie einen einfachen Rechner mit UDP in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage