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
1. Übersicht Das Promise-Objekt ist eine von ES6 ...
Array-Methoden JavaScript bietet viele Array-Meth...
In der XHTML-Sprache wissen wir alle, dass das ul...
Oftmals erwarten wir, dass das Abfrageergebnis hö...
Möglicherweise müssen Sie in Linux manchmal symbo...
1. Was ist mycat Ein vollständig Open Source-Groß...
Inhaltsverzeichnis Installieren Sie Mockjs in Ihr...
Ich erstelle schon lange Websites, habe aber immer...
Ausleihen von Konstruktoren Die Grundidee dieser ...
Inhaltsverzeichnis V-Modell .sync Der Unterschied...
Heutige Webdesigns neigen dazu, sehr große Schrif...
Vorwort Nachdem das Projekt auf .net Core migrier...
1. Es gibt im Allgemeinen zwei Methoden zur Steue...
Konfigurationsmethode für die installationsfreie ...
Wenn die Wörter in der SQL-Anweisung mit den Schl...