Dieses Beispiel teilt den spezifischen Code für den Java -Implementierungs -Client mit, um Dateien für Ihre Referenz an den Server zu senden. Der spezifische Inhalt ist wie folgt
Serverquellcode:
Import Java.io.BufferedReader; Import Java.io.file; importieren java.io.filenotfoundException; importieren java.io.fileoutputStream; importieren java.io.ioException; importieren java.io.inputStreamReader; importieren java.net.serversocket; importieren java.net.socket; /*** Dateiname: serverReceive.java* Implementierungsfunktion: Als Server empfangen Sie Dateien, die vom Client gesendet wurden V. Der Abfluss kann von selbst nach Ihrem eigenen Programm platziert werden. Socket S = NULL; / ** Definieren Sie Dateiobjekte und Dateiausgabe -Stream -Objekte, die nach dem Empfang lokal erstellt wurden*/ file Datei = null; FileOutputStream fos = null; / ** Definieren Sie Eingangsströme und verwenden Sie den InputStream von Socket, um das Paket einzugeben.*/ InputStream ist = null; / ** Byte -Arrays definieren, um als Speicherpakete für Pakete zu dienen*/ byte [] buffer = new byte [4096*5]; / ** Standzeichenfolge, mit der Datei -Senden von Anforderungen gesendet werden*/ string comm = null; / ** Setzen Sie die SoceKT -Kommunikation und warten Sie, bis der Server eine Verbindung herstellt*/ try {ss = new ServerSocket (4004); s = ss.accept (); } catch (ioException e) {e.printstacktrace (); } / ** Lesen Sie die Konventionsinformationen, die von einer Client -Zeile gesendet wurden BufferedReader BR = neuer BufferedReader (ISR); comm = br.readline (); } catch (ioException e) {system.out.println ("Der Server trennt vom Client"); }/** Starten Sie den von dem Client gesendeten Anforderungsbefehl*/int index = comm.indexof ("/#"); / ** Diskutieren Sie, ob das Protokoll das Protokoll zum Senden von Dateien ist*/ string xieyi = comm.substring (0, Index); if (! xieyi.equals ("111") {System.out.println ("Der vom Server empfangene Protokollcode ist falsch"); zurückkehren; } / ** analysieren Sie den Namen und die Größe der Datei* / comm = comm.substring (Index + 2); index = comm.indexof ("/#"); String Dateiname = comm.substring (0, Index) .Trim (); String ideSize = comm.substring (index + 2) .trim (); / ** Erstellen Sie eine leere Datei, um die Datei zu empfangen*/ file = new Datei (Dateiname); if (! file.exists ()) {try {file.createNewFile (); } catch (ioException e) {System.out.println ("Die Erstellung von Server -Seitendateien fehlgeschlagen"); }} else { / ** Sie können auch fragen, ob Sie* / system.out.println überschreiben sollen ("Die gleiche Datei ist bereits in diesem Pfad vorhanden, überschreiben"); } / ** [Das obige ist der vorbereitete Teil des Servers im Client -Code]* / / ***Der Schlüsselcode für den Server zum Empfangen der Datei* / try { / ** die Datei in das Dateiausgabe -Stream -Objekt* / fos = new FileOutputStream (Datei); long File_size = long.parselong (FileSize); ist = S.GetInputStream (); / ** Größe ist die Länge jedes empfangenen Pakets*/ int Größe = 0; / ** Anzahl wird verwendet, um die Länge der empfangenen Datei aufzuzeichnen*/ Long Count = 0; / ** Pakete empfangen mit while loop*/ while (count <File_size) {/ ** ein Paket aus dem Eingabestream lesen*/ size = is.read (puffer); / ** Schreiben Sie das Paket, das Sie gerade in die lokale Datei gelesen haben*/ fos.write (Puffer, 0, Größe); fos.flush (); / ** Die Länge der empfangenen Datei +Größe*/ count += Größe; System.out.println ("Der Server empfangen das Paket, die Größe" + Größe); }} catch (FilenotFoundException e) {System.out.println ("Der Server konnte die Datei nicht schreiben"); } catch (ioException e) {System.out.println ("Server: Client -Disconnect"); } endlich { / *** Schließen Sie die geöffnete Datei* Bei Bedarf können Sie hier auch die Socket -Verbindung schließen** / try {if (fos! = null) fos.close (); } catch (ioException e) {e.printstacktrace (); } // catch (ioException e)} // Schließlich} // public static void main (String [] args)} // öffentliche Klasse ServerReceiveClient -Quellcode:
Import Java.io.file; import Java.io.FileInputStream; importieren java.io.filenotfoundException; importieren java.io.ioException; importieren java.io.outputstream; importieren java.io.printstream; importieren java.net.socket; /** * * Dateiname: Clientsend.java * Implementierungsfunktion: Senden Sie eine Datei als Client an den Server * * Spezifischer Implementierungsprozess: * 1. Erstellen Sie eine Verbindung mit dem Server, IP: 127.0.0.1, Port: 4004 * 2. Senden Sie den Dateinamen und die Größe des Dateinamens an den Server. Nur verwendet, um die Dateiübertragung zwischen dem Client und dem Server zu demonstrieren. * Es gibt keinen Befehl Dateiprotokoll vor jedem Datenpaket * Die spezifische Protokollübertragung und die ausgehende Verwendung der Datei können nach Ihrem eigenen Programm platziert werden. /** Definieren Sie das Dateiobjekt, dh die zugesandte Datei*Wenn Sie einen absoluten Pfad verwenden, vergessen Sie nicht, den Unterschied zwischen '/'/'** für bestimmte Unterschiede zu verwenden. / ** Definieren Sie den Dateieingangsstrom zum Öffnen und Lesen der zu gesendeten Datei*/ fileInputStream fis = null; / ** Byte -Array definieren, um als Speicherpaket des Datenpakets zu werden*/ byte [] buffer = new Byte [4096*5]; / ** Definieren Sie den Ausgangsstrom und verwenden Sie den Ausgangsstream von Socket, um das Paket auszugeben.*/ OutputStream os = null; / ** Überprüfen Sie, ob die Sendungsdatei vorhanden ist zurückkehren; } / ** Erstellen Sie eine Verbindung mit dem Server* / try {s = neuer Socket ("127.0.0.1", 4004); } catch (ioException e) {System.out.println ("Nicht mit dem Server verbunden"); } / ** initialisieren Sie das FIS -Objekt mit einem Dateiobjekt*, damit die Dateigröße extrahiert werden kann** / try {fis = new FileInputStream (sendFile); } catch (FilenotFoundException e1) {e1.printstacktrace (); } /** Senden Sie zuerst Informationen zur Datei an den Server, um den Server so zu erleichtern, dass zugehörige Vorbereitungen*für bestimmte Vorbereitungen empfangen werden. Überprüfen Sie bitte den Servercode. * * Der gesendete Inhalt enthält: Senden von Dateiprotokollcode (hier ist 111)/#Dateiname (mit Suffix -Name)/#Dateigröße * */try {printstream ps = new printstream (s.getOutputStream ()); ps.println ("111/#" + sendFile.getName () + "/#" + fis.available ()); ps.flush (); } catch (ioException e) {System.out.println ("Serververbindungsunterbrechung"); } / *** HEET HIER 2 Sekunden lang hier und wartet darauf, dass der Server die relevante Arbeiten* Auch die Netzwerkverzögerung vorbereitet. } catch (InterruptedException e1) {e1.printstacktrace (); } / ** Nach Abschluss der vorherigen Vorbereitungsarbeiten*ist der folgende Schlüsselcode für die Dateiübertragung** / try { / ** den Ausgabestream des Sockets abrufen, um ein Paket darauf zu schreiben* / os = s.getOutputStream (); / ** Die Größe wird verwendet, um die Größe jeder Lesen der Datei aufzuzeichnen*/ int size = 0; / ** Lesen Sie die Datei mit der Schleife, bis die Dateilesung beendet ist*/ while ((size = fis.read (puffer))! / ** Schreiben Sie das Paket, das Sie gerade in den Ausgabestream lesen*/ os.write (Puffer, 0, Größe); / ** aktualisieren*/ os.flush (); }} catch (FilenotFoundException e) {System.out.println ("Client -Lesedatei -Fehler"); } catch (ioException e) {System.out.println ("Client -Ausgabedateifehler"); } endlich { / *** Schließen Sie die geöffnete Datei* Bei Bedarf können Sie hier auch die Socket -Verbindung schließen** / try {if (fis! = null) fis.close (); } catch (ioException e) {System.out.println ("Client -Dateischließfehler"); } // catch (ioException e)} // schließlich} // public static void main (String [] args)} // Public Class ClientsendDas obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.