Wenn wir über TCP/IP in Java eine Verbindung zu einem Server über das Netzwerk herstellen möchten, müssen wir ein java.net.Socket-Objekt erstellen und eine Verbindung zum Server herstellen. Wenn Sie Java NIO verwenden möchten, können Sie auch ein SocketChannel-Objekt in Java NIO erstellen.
Socket erstellen
Der folgende Beispielcode ist mit Port 80 auf dem Server mit der IP-Adresse 78.64.84.171 verbunden. Dieser Server ist unser Webserver (www.VeVB.COm) und Port 80 ist der Webdienst-Port.
Kopieren Sie den Codecode wie folgt:
Socket socket = new Socket("78.46.84.171", 80);
Wir können auch Domänennamen anstelle von IP-Adressen verwenden, wie im folgenden Beispiel:
Kopieren Sie den Codecode wie folgt:
Socket socket = new Socket("VeVB.COm", 80);
Socket sendet Daten
Um Daten über Socket zu senden, müssen wir den Ausgabestream des Sockets (OutputStream) abrufen.
Kopieren Sie den Codecode wie folgt:
Socket socket = new Socket("VeVB.COm", 80);
OutputStream out = socket.getOutputStream();
out.write("some data".getBytes());
out.flush();
out.close();
socket.close();
Der Code ist sehr einfach, aber wenn Sie Daten über das Netzwerk an den Server senden möchten, dürfen Sie nicht vergessen, die Methode „flush()“ aufzurufen. Die zugrunde liegende TCP/IP-Implementierung des Betriebssystems legt die Daten zunächst in einen größeren Daten-Cache-Block und die Größe des Cache-Blocks wird an die TCP/IP-Paketgröße angepasst. (Anmerkung des Übersetzers: Durch den Aufruf der Methode „flush()“ werden nur Daten in den Cache des Betriebssystems geschrieben und es kann nicht garantiert werden, dass die Daten sofort gesendet werden.)
Socket liest Daten
Um Daten vom Socket zu lesen, müssen wir den Eingabestream des Sockets (InputStream) abrufen.
Kopieren Sie den Codecode wie folgt:
Socket socket = new Socket("VeVB.COm", 80);
InputStream in = socket.getInputStream();
int data = in.read();
//... weitere Daten lesen...
in.close();
socket.close();
Der Code ist nicht kompliziert, es sollte jedoch beachtet werden, dass beim Lesen von Daten aus dem Eingabestream des Sockets die Datei erst aufgerufen wird, wenn -1 zurückgegeben wird, da für den Socket nur der Server verwendet wird Wenn die Verbindung geschlossen ist, gibt der Eingabestream des Sockets -1 zurück, aber tatsächlich schließt der Server die Verbindung nicht weiter. Angenommen, wir möchten mehrere Anfragen über eine einzige Verbindung senden, dann wäre es in diesem Fall albern, die Verbindung zu schließen.
Daher müssen wir beim Lesen von Daten aus dem Socket-Eingabestream die Anzahl der zu lesenden Bytes kennen. Dies kann erreicht werden, indem der Server den Daten mitteilt, wie viele Bytes gesendet wurden, oder indem am Ende der Daten Sonderzeichen festgelegt werden . Die Markup-Methode ist implementiert.
Steckdose schließen
Nachdem wir den Socket verwendet haben, müssen wir den Socket schließen und die Verbindung zum Server trennen. Um einen Socket zu schließen, müssen Sie nur die Methode Socket.close() aufrufen. Der Code lautet wie folgt:
Kopieren Sie den Codecode wie folgt:
Socket socket = new Socket("VeVB.COm", 80);
socket.close();
(Volltext endet)