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.
Mari kita fahami secara ringkas beberapa konsep asas tentang rangkaian Java−
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.
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.
DatagramSocket nameOfObject = new DatagramSocket();Objek kelas
DatagramPacket menyimpan data yang akan dihantar.
DatagramPacket nameOfPacket = new DatagramPacket();
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); } } }
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.
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.
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
D:\Java Programs>java ServerCalc Client has requested for 1
Apabila kita memasukkan 0, sambungan akan ditamatkan dan program akan berhenti melaksanakan.
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!