Dieser Artikel teilt den spezifischen Code des Java -Datei -Upload -Servers und des Clients für Ihre Referenz. Der spezifische Inhalt ist wie folgt
Datei -Upload -Server:
/ *** serverseitig mit dem TCP-Protokoll zur Implementierung von Upload-Funktionen* Ideen:* Erstellen Sie ein neues Serversocket* Warten Sie, bis der Client eine Verbindung herstellt* Nach dem Verbinden starten Sie den untergeordneten Thread, über den Socket, der durch die Verbindung zum untergeordneten Thread erhalten wurde. UploadThread -Befehl = new UploadThread (); server.start (Befehl); } /*** Funktion: Akzeptieren Sie die Verbindung, starten Sie den untergeordneten Thread, Schleife* @param Befehl Das zum Download von untergeordnete Thread -Objekt, das die Runnable -Schnittstelle implementiert* /private void start (uploadThread -Befehl) {// Lokale Variable ServerSocket ServerSocket = null; Steckdose Transsocket; // Business Logic Try {ServerSocket = New ServerSocket (55555); while (true) {System.out.println ("Warte auf Verbindung ..."); TransSocket = ServerSocket.accept (); int i = 0; i ++; System.out.println ("Th"+i+"Verbindung"); // Müssen Sie den Thread nach dem Herunterladen schließen? ? ? command.setsocket (Transsocket); Executors.NewFixedThreadpool (5) .execute (Befehl); } // Exception Catch} catch (ioException e) {e.printstacktrace (); // Ressource schließen} endlich {try {serverSocket.close (); } catch (ioException e) {e.printstacktrace (); }} // Ende von Try} // Ende von Connect @Test public void testconnect () {// Testaufgabe: Führen Sie zuerst die Serverseite aus und führen Sie den Client mehrmals aus. Das Serversegment kann kontinuierlich untergeordnete Threads erstellen, und der Test ist erfolgreich // Testvorbereitung: Erstellen Sie einen Thread, um den Befehl uploadThread zu simulieren. starten (Befehl); } @Test public void testDown () löst ioException {byte [] buf; BytearrayInputStream Bis; String str = "canglaoshi.avi/nContent, Inhalt, Inhalt"; buf = str.getBytes (); Bis = neuer BytearrayInputStream (BUF); UploadThread ut = new UploadThread (); ut.down (bis); }} // Subthread, das jede Übertragungsaufgabeklasse aduploadThread implementiert, runnable {Socket Socket; public uploadThread () {} public uploadThread (Socket Socket) {this.socket = Socket; } @Override public void run () {InputStream in; try {in = socket.getInputStream (); runter (in); // Ausnahmehandling} catch (ioException e) {e.printstacktrace (); } endlich {try {socket.close (); } catch (ioException e) {e.printstacktrace (); }} // Code testen/*try {thread.sleep (5000); System.out.println (Thread.currentThread (). GetName ()+", copyname ()+"); } catch (interruptedException e) {e.printstacktrace (); }*/} // Ende des öffentlichen void setSocket (Socket Socket) {this.socket = Socket; } // Methode herunterladen/*** Ziel: Schreiben Sie Daten in InputStream in die lokale Idee* Idee:* 1. Nehmen Sie den Eingabestream, es ist am besten, sie in den Eingabestream zu übergeben, anstatt ihn direkt aus dem Socket zu erhalten, und verwenden Sie sie ein. Down (InputStream in) löst ioException {// lokale variable char ch; char [] namearr = new char [256]; byte [] buf = neues byte [1024]; String name = ""; OutputStream out = null; // Business Logic Versuchen Sie {// Schritt 1: Erhalten Sie den Dateinamen und konstruieren Sie den Dateiausgabemestrom int i = 0; while ((ch = (char) in.read ())! = '/n') {namearr [i ++] = ch; } //name=namearr.toString();//this Sätze kann kein Zeichenarray in eine Zeichenfolge umwandeln. Sie müssen den folgenden Anweisungsname = new String (namearr) verwenden. System.out.println ("Die zu heruntergeladene Datei lautet:"+Name); out = new FileOutputStream ("src // down //"+name); // Schritt 2: Schreiben Sie andere Inhalte in den Eingabestream in die Datei int len; while ((len = in.read (buf))! =-1) {out.write (buf, 0, len); } out.flush (); // Ausnahme -Capture} catch (ioException e) {e.printstacktrace (); // Ressource schließen} endlich {// Frage: Können zwei Aufnahmen zusammengestellt werden? Wie kann man mit Ausnahmen umgehen, wenn der Stream schließt? in.close (); out.close (); } // Debuggesystem.out.println (Name); }} // Ende des Uploadthreads Datei -Upload -Client:
/ *** Client, das das TCP -Protokoll verwendet, um die Upload -Funktion zu implementieren* @Author yajun*/ public class UploadClient {public static void main (String [] args) {UploadClient Client = new uploadClient (); Client.Upload ("SRC // Donnerstag // ASListTest.java"); } / *** Funktion: Datei auf dem Server hochladen* 1. Stellen Sie eine Verbindung zum Server fest Ausgangsstream aus; try {socket = new Socket ("127.0.0.1", 5555); out = socket.getOutputStream (); write2OutputStream (Name, out); // Exception Capture} catch (unbekannteHostException e) {e.printstacktrace (); } catch (ioException e) {e.printstacktrace (); }} @Test public void testUpload () {Upload ("src // status.xml"); } / ** * Funktion: Geben Sie den Dateinamen und den Ausgabestream über, schreiben Sie die Datei in den Ausgabestream * @param Pfad * @throws ioException * / private void Write2OutputStream (String -Pfad, Ausgabestream) löst IOException {FileInputStream fis = null aus; byte [] buf = neues byte [1024]; String Dateiname = ""; // Business Logic Try {// 1. Schreiben Sie den Dateinamen fileName = path.substring (path.lastindexof ('//')+1); System.out.println ("Der Dateiname, den Sie hochladen möchten, lautet:"+Dateiname); out.write (Dateiname.getBytes ()); out.write ('/n'); // 2. Schreiben Sie den Dateiinhalt fis = new FileInputStream (Pfad); Int len; while ((len = fis.read (buf))! =-1) {out.write (buf, 0, len); } out.flush (); // Ausnahmehandling} catch (ioException e) {e.printstacktrace (); // die Ressource schließen} endlich {fis.close (); out.close (); }} // Ende des Uploads @Test public void testwrite2OutputStream () löscht ioException {bytearrayoutputStream out = null; versuche {out = new bytearrayoutputStream (); write2OutputStream ("src // status.xml", out); System.out.println (out.toString ("utf-8")); } catch (ioException e) {e.printstacktrace (); } endlich {out.close (); }}}Dieser Artikel wurde in "Zusammenfassung der Java -Upload -Operationstechniken" zusammengestellt, und jeder kann gerne lernen und lesen.
Das 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.