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
Manchmal möchten wir eine solche Funktion impleme...
So ermitteln Sie, ob eine Variable in der Shell l...
Die React-Version beim Schreiben dieses Artikels ...
Docker verfügt über viele Log-Plugins. Standardmä...
In diesem Artikel erfahren Sie mehr über die Inst...
Wenn wir in der MySQL-Datenbank Fuzzy-Abfragen be...
Lösung Verzichten Sie auf die Linux-VM, die mit D...
Mindmap Er sieht wahrscheinlich so aus: Die meist...
Vorwort MySQL unterstützt Multithread-Replikation...
In diesem Artikel wird der spezifische Code für J...
Es gibt zwei Tabellen, und die Datensätze in Tabe...
1 Überprüfen Sie, ob der Kernel ein Tun-Modul hat...
In diesem Artikel finden Sie den spezifischen Cod...
Der „Abbrechen“-Button ist nicht Teil des notwend...
Dieser Artikel stellt RHEL8-Netzwerkdienste und N...