Das Beispiel dieses Artikels beschreibt die einfache Anwendung von Java -Netzwerkprogrammen von Java Network. Teilen Sie es für alle für Ihre Referenz. Die Einzelheiten sind wie folgt:
In Java verwenden wir Java.net.Socket und seine zugehörigen Klassen, um verwandte Funktionen im Zusammenhang mit dem Netzwerk zu vervollständigen. Die Socket -Klasse ist sehr einfach zu bedienen, da die Java -Technologie den komplexen Prozess der Herstellung von Netzwerkverbindungen und zum Senden von Daten über Verbindung verbirgt. Der unten erwähnte Inhalt ist nur für das TCP -Protokoll anwendbar.
1. Verbindung zum Server eine Verbindung herstellen
Wir können den Konstruktor der Socket -Klasse verwenden, um einen Sockel zu öffnen, wie z.
Socket SK = New Socket ("210.0.235.14", 13);
Unter ihnen ist 210.0.235.14 ein String -Objekt mit einem Aufstiegsspitzen, der die IP -Adresse (oder den Hostnamen) des Host -Hosts angibt, und 13 zeigt den angegebenen Port 13 des angeschlossenen Zielhosts an. Der 210.0.235.14 ist ein Timing -Server in Hongkong.
Beachten Sie, dass das Programm blockiert wird, bevor er erfolgreich eine Verbindung zum Server herstellt.
Als Nächstes können Sie die Methode GetInputStream () der Socket -Klasse verwenden, um ein Eingabebetriebsobjekt über dieses Objekt zu erhalten.
InputStream instream = sk.getInputStream ();
Um Daten an den Zielhost zu senden, können Sie die Methode von GetOutputStream () aufrufen, um ein Ausgabestream -Objekt abzurufen.
Die folgende Beispielfunktion besteht darin, den Timing -Server zu verbinden und die zurückgegebenen Informationen in die Standardausgabe zu drucken:
Versuchen Sie {Socket SK = Neue Socket Canner (Instrengung); );} Sk.close ();} Xception e) // Zeit -zeit -Abnormalität {System.out.println ("Time Out!");
Die SetSotimeOut () -Methode im Code kann das Timeout festlegen, dh wenn die Einstellzeit nicht abgeschlossen ist, wird der Lese- und Schreibvorgang nicht abgeschlossen und die SockettimeOutException wird ausgeworfen, um die Verbindung zu schließen, indem diese Abnormalität erfasst wird.
Darüber hinaus gibt es ein Zeitübergangsproblem, das gelöst werden muss, dh der Konstruktor dieser Socket -Klasse
neuer Socket (Host, Port);
Es wird immer unendlich unendlich blockiert, bis die Verbindung des Zielhosts erfolgreich hergestellt wurde. Dies ist natürlich nicht das, was wir wollen. Wir können dieses Problem lösen, indem wir unten anrufen:
Socket SK = neuer Socker ();
2. Holen Sie sich die Host -Adresse
Die statische Methode der InetadDRSS -Klasse GetByName (Hostname) kann das Inetaddress -Objekt zurückgeben, das eine Hostadresse darstellt. Rufen Sie dann die Methode Gethostadaddress () auf, um ein String -Objekt zurückzugeben, das die IP -Adresse angibt.
Einige große Besuche entsprechen normalerweise mehreren IP -Adressen, um einen Lastausgleich zu erreichen. Wir können die Methode getAllByName () aufrufen, um die gesamte Host -Adresse zu erhalten, die ein Array eines Inetaddress -Objekts zurückgibt.
Das Folgende ist ein einfaches Mini -Programm.
Paket CLS; [] Addr = inetaddress.getAllByName (Hostname); println (Inetaddress.getLocalHost (). GetHostaddress ());}} Catch (Exception E) {e.printstacktrace ();}}}}}}}}}}}}}}}}}}}}}}}
3. Serverprogramm
Die Serveranwendung verwendet die ServerSocket -Klasse, um einen Socket zu erstellen, und ist an den lokalen Port gebunden, wie z.
ServerSocket Sock = New ServerSocker (8000);
Mit Sock.Accept () können Sie das Programm weiterhin auf die Verbindung warten.
Hier soll im Allgemeinen einen neuen Thread für jede Verbindung geöffnet werden, um ihn zu servieren.
Im Folgenden ist ein vollständiges Beispiel.
Paket CLS; // ServerSocket Servsocket = Neue ServersSocket (8000); ); Schreiben Sie in die Datei // einen neuen Thread Thread th = neuer Thread (neuer Dienst (Client, Betrag)); LOG-Datei öffentliche void Writlog (String Str) {Datei logfile = new Datei ("Server-Log.Txt"); ();} Catch (Ausnahme E) {E.PrintStacktrace ();} / ** Service Thread Class This.ix = IE; [Geben Sie die "Bye" aus der Verbindung ein. ")") ~ ^- ^"); break;} send.println (" Dies ist ein Testprogramm, es gibt jetzt keine Funktion "); + ix +" Benutzer " + client.getInetaddress (). Gethostaddress () +" wurde getrennt So connecle/n ";
Dieses Programm wurde auf dem Server platziert. Sie können den Befehl telnet Youthol.tk 8400 verwenden, um die laufenden Ergebnisse dieses Programms
Es ist zu hoffen, dass dieser Artikel für Java -Programmdesign aller hilfreich ist.