Ich werde nicht näher auf die Theorie von UDP eingehen. Ich werde Ihnen nur ein HelloWorld-Programm über UDP geben. Der Code ist klar und ich hoffe, er wird Anfängern hilfreich sein! Natürlich, eigentlich stehe ich auf diesem Gebiet noch ganz am Anfang! Schreiben Sie zunächst den Servercode. Der Server bindet die lokale IP und den Port, um auf Zugriff zu warten: Paket udp; importiere java.io.IOException; importiere java.net.DatagramPacket; importiere java.net.DatagramSocket; importiere java.net.InetSocketAddress; /** * UDP-Dienstklasse */ öffentliche Klasse UdpServerSocket { privater Byte[] Puffer = neues Byte[1024]; privater statischer DatagramSocket ds = null; privates DatagramPacket-Paket = null; private InetSocketAddress socketAddress = null; /** * Testmethode */ öffentliche statische void main(String[] args) wirft Exception { Zeichenfolge serverHost = "127.0.0.1"; int ServerPort = 3344; UdpServerSocket udpServerSocket = neuer UdpServerSocket(ServerHost, serverPort); während (wahr) { udpServerSocket.receive(); udpServerSocket.response("Hallo, hast du gegessen?"); } } /** * Konstruktor, Host und Port binden */ öffentlicher UdpServerSocket(String host, int port) löst Ausnahme aus { socketAddress = neue InetSocketAddress(Host, Port); ds = neuer DatagramSocket(Socket-Adresse); System.out.println("Server gestartet!"); } /** * Datenpakete empfangen. Diese Methode führt zu einer Blockierung des Threads */ public final String receive() wirft IOException { Paket = neues Datagrammpaket (Puffer, Pufferlänge); ds.receive(Paket); String-Info = neuer String (Paket.getData(), 0, Paket.getLength()); System.out.println("Informationen erhalten: " + info); Rückgabeinfo; } /** * Senden Sie das Antwortpaket an den Anforderer */ öffentliche finale void-Antwort (String-Info) wirft IOException { System.out.println("Clientadresse: " + packet.getAddress().getHostAddress() + ",port:" + packet.getPort()); DatagramPacket dp = neues DatagramPacket(Puffer, Pufferlänge, Paket .getAddress(), Paket.getPort()); dp.setData(info.getBytes()); ds.send(dp); } } Nach dem Ausführen wird angezeigt, dass der Server erfolgreich ausgeführt wurde, das Programm beginnt, den Port abzuhören, die Empfangsmethode wird blockiert und es wird nur fortgesetzt, wenn Zugriff besteht! Wenn wir einen Client schreiben, um darauf zuzugreifen, sehen wir, dass die Beispiele im Internet alle direkt ein DatagramSocket-Objekt erstellen, aber tatsächlich wissen wir nicht, welchen Port wir verwenden. Hier werde ich den Port angeben, an den ich binde, wenn ich ihn erstelle. Tatsächlich ist es sehr einfach. Übergeben Sie beim Initialisieren des Objekts einfach einen Port-Parameter. Wenn Sie hier auf den Client zugreifen, druckt der Client Ihre IP und Ihren Port! Schauen Sie sich den Client-Code an: Paket udp; importiere java.io.*; importiere java.net.*; /** * UDP-Client-Programm, das zum Senden von Daten an den Server und zum Empfangen der Antwortinformationen des Servers verwendet wird */ öffentliche Klasse UdpClientSocket { privater Byte[] Puffer = neues Byte[1024]; privater statischer DatagramSocket ds = null; /** * Testen Sie die Methode des Clients zum Senden von Paketen und Empfangen von Antwortinformationen */ öffentliche statische void main(String[] args) wirft Exception { UdpClientSocket-Client = neuer UdpClientSocket(); Zeichenfolge serverHost = "127.0.0.1"; int ServerPort = 3344; client.send(serverHost, serverPort, ("Hallo, Liebling!").getBytes()); byte[] bt = client.empfangen(); System.out.println("Serverantwortdaten: " + new String(bt)); // Schließen Sie die Verbindung try { ds.schließen(); } Fang (Ausnahme ex) { Beispiel: printStackTrace(); } } /** * Konstruktor, UDP-Client erstellen */ öffentliche UdpClientSocket() wirft Ausnahme { ds = neuer DatagramSocket(8899); // Als Client an lokalen Port binden } /** * Dateninformationen an den angegebenen Server senden */ öffentliche final void send(finaler String-Host, finaler int-Port, letztes byte[] bytes) wirft IOException { DatagramPacket dp = neues DatagramPacket (Bytes, Bytes.Länge, InetAddress.getByName (Host), Port); ds.send(dp); } /** * Vom angegebenen Server zurückgesendete Daten empfangen */ öffentliches letztes Byte[] empfangen() wirft Ausnahme { DatagramPacket dp = neues DatagramPacket(Puffer, Pufferlänge); ds.empfangen(dp); byte[] Daten = neues byte[dp.getLength()]; System.arraycopy(dp.getData(), 0, Daten, 0, dp.getLength()); Daten zurückgeben; } } Führen Sie das Programm direkt aus, um den Effekt zu sehen! Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
>>: Eine kurze Analyse der parallelen MySQL-Replikation
Nextcloud ist ein Open Source- und kostenloses Ne...
Das Ziel von Google mit Flutter bestand immer dar...
Inhaltsverzeichnis 1. Komponentenwechselmethode M...
1. Prüfen Sie, ob Port 80 belegt ist. Normalerwei...
Inhaltsverzeichnis Analysieren von VUE-Dateien Do...
Inhaltsverzeichnis Vorwort 1. Überprüfen Sie die ...
Erste Verwendung von Docker zum lokalen Verpacken...
Inhaltsverzeichnis 1. Einleitung 2. Warum brauche...
Ich verwende CSS schon seit langer Zeit, habe jed...
Wie in der folgenden Abbildung dargestellt: Wenn ...
Die Tabellenstruktur ist wie folgt: Ich würde var...
Lassen Sie mich zunächst kurz erklären, was MySQL...
Vorwort: Wenn wir Vue verwenden, verwenden und sc...
Inhaltsverzeichnis MySql8.0 Fehler bei der Transa...
Inhaltsverzeichnis defineComponent-Überladungsfun...