Rumah  >  Artikel  >  Java  >  Melaksanakan kalkulator mudah melalui UDP menggunakan Java Laksanakan kalkulator mudah menggunakan UDP dalam Java

Melaksanakan kalkulator mudah melalui UDP menggunakan Java Laksanakan kalkulator mudah menggunakan UDP dalam Java

王林
王林ke hadapan
2023-08-27 21:33:021103semak imbas

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

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

Suit Protokol Internet mengandungi semua jenis protokol yang membolehkan peranti berkomunikasi antara satu sama lain melalui Internet. UDP ialah salah satu protokol suite ini, dan bentuk penuhnya ialah Protokol Datagram Pengguna. Tidak seperti TCP, ia tidak boleh dipercayai dan protokol tanpa sambungan. Ia tidak mewujudkan sebarang jenis sambungan dengan peranti lain sebelum menghantar data.

Dalam artikel ini, kami akan membangunkan kalkulator pelayan pelanggan yang mudah menggunakan UDP dalam Java. Pelanggan meminta operasi, dan pelayan mengira dan menghantar hasilnya kepada peranti klien.

JAWA NETWORK

Mari kita fahami secara ringkas beberapa konsep asas tentang rangkaian Java−

Alamat Inet

Alamat IP ialah nombor tidak bertanda 32-bit atau 128-bit yang mengenal pasti peranti di Internet secara unik. Lebih mudah untuk mengingati nama hos IP daripada alamat berangka. Oleh itu, kita perlu menggunakan kelas "InetAddress" untuk merangkumnya. Kami menggunakan kaedah terbina dalam "getLocalHost()" untuk mendapatkan alamat IP hos tempatan.

datagram

Ia adalah paket kecil yang mengandungi data yang boleh dihantar antara dua mesin melalui Internet. Java melaksanakan dua kelas untuk mewujudkan sambungan UDP -

DatagramSocket kelas digunakan untuk menghantar dan menerima paket datagram. Ia juga menentukan destinasi pakej ini. Kaedah terbina dalamnya 'send()' dan 'receive()' digunakan untuk menghantar dan menerima paket data masing-masing.

tatabahasa

DatagramSocket nameOfObject = new DatagramSocket();   
Objek kelas

DatagramPacket menyimpan data yang akan dihantar.

tatabahasa

DatagramPacket nameOfPacket = new DatagramPacket();   

Program Kalkulator menggunakan UDP

Program pelanggan

Cara kod berfungsi

  • Kami mulakan dengan mengimport dua pakej terpenting bernama 'java.net' untuk mengakses semua kelas yang berkaitan dengan rangkaian Java, dan 'java.io' , untuk aliran input dan output. Gunakan pakej ‘java.util’ untuk menggunakan kelas ‘Pengimbas’.

  • Buat sambungan UDP dan dapatkan alamat hos setempat.

  • Sekarang, di dalam blok cuba, kami akan meminta input pengguna melalui kaedah 'hantar()' dan 'terima()' kelas 'DatagramSocket' untuk meminta operasi dan menerima hasilnya dengan sewajarnya.

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);
      } 
   }
}

Program bahagian pelayan

Cara kod berfungsi

  • Pertama, wujudkan sambungan dengan pelanggan dan tentukan dua objek kelas DatagramPacket untuk menghantar dan menerima paket data menggunakan kaedah "hantar()" dan "terima()" bagi kelas "DatagramSocket" .

  • Di dalam blok cuba, kami menerima permintaan daripada klien dan kemudian menggunakan suis case untuk melaksanakan operasi dan menghantar hasilnya kepada peranti klien.

Contoh

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);
      } 
   }
}

Untuk menjalankan kedua-dua program pada masa yang sama, buka kedua-dua cmd pada mesin tempatan anda. Pada antara muka cmd pertama, susun dan jalankan program sebelah pelayan, dan kemudian laksanakan program klien pada antara muka yang lain.

Output pelanggan

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  

Output sisi pelayan

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

Apabila kita memasukkan 0, sambungan akan ditamatkan dan program akan berhenti melaksanakan.

KESIMPULAN

Dalam artikel ini, kami mempelajari beberapa konsep asas rangkaian Java. Selain itu, kami membincangkan program bahagian pelayan dan bahagian klien untuk kalkulator mudah menggunakan UDP. Kami menemui cara untuk mewujudkan sambungan antara peranti klien dan pelayan menggunakan Java.

Atas ialah kandungan terperinci Melaksanakan kalkulator mudah melalui UDP menggunakan Java Laksanakan kalkulator mudah menggunakan UDP dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam