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.
Lassen Sie uns zunächst kurz einige grundlegende Konzepte zum Java-Netzwerk verstehen –
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.
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 KlasseDatagramSocket 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.
DatagramSocket nameOfObject = new DatagramSocket();
DatagramPacket speichern die zu sendenden Daten.
DatagramPacket nameOfPacket = new DatagramPacket();
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); } } }
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.
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); } } }
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.
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
Wenn wir 0 eingeben, wird die Verbindung beendet und das Programm wird nicht mehr ausgeführt.
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!