Artikel ini membagikan kode spesifik server unggahan file java dan klien untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
Server Upload File:
/** * Server-side using TCP protocol to implement upload function* Ideas: * Create a new ServerSocket * Wait for the client to connect* After connecting, start the child thread, pass the Socket obtained by the connection to the child thread* Looping* @author yajun * */ public class UploadServer { public static void main(String[] args) { UploadServer server=new UploadServer(); Command unggahthread = unggah baru (); server.start (perintah); } /*** Fungsi: Terima koneksi, mulai utas anak, loop* @param perintah objek utas anak yang digunakan untuk mengunduh, yang mengimplementasikan antarmuka runnable* /private void start (unggah perintah) {// server variabel server variabel lokal = null; Socket Transsocket; // Logika Bisnis Coba {ServerSocket = New ServerSocket (55555); while (true) {System.out.println ("Tunggu koneksi ..."); transsocket = serversocket.accept (); int i = 0; i ++; System.out.println ("th"+i+"connection"); // Apakah Anda perlu menutup utas setelah mengunduh? ? ? command.setsocket (transsocket); Executors.newfixedThreadPool (5). Execute (Command); } // pengecualian tangkapan} catch (ioException e) {e.printstacktrace (); // tutup sumber daya} akhirnya {coba {serversocket.close (); } catch (ioException e) {e.printstacktrace (); }} // akhir coba} // akhir koneksi @test public void testConnect () {// Tes Tugas: Pertama jalankan sisi server, lalu jalankan klien beberapa kali. Segmen server dapat terus membuat utas anak, dan tes berhasil // persiapan tes: Bangun utas untuk mensimulasikan perintah unduhan utas unggahthread command = unggah baru (); Mulai (perintah); } @Test public void testdown () melempar ioException {byte [] buf; BytearrayInputStream bis; String str = "canglaoshi.avi/ncontent, konten, konten"; buf = str.getbytes (); bis = bytearrayInputStream baru (buf); UnggahThread ut = unggah baru (); ut.down (BIS); }} // Subthread yang melengkapi setiap kelas transmisi kelas Tugas Unggah Mempemahkan Runnable {Socket Socket; unggahan publik () {} unggahan publik (soket soket) {this.socket = socket; } @Override public void run () {inputStream in; coba {in = socket.getInputStream (); turun (dalam); // penanganan pengecualian} catch (ioException e) {e.printstacktrace (); } akhirnya {coba {socket.close (); } catch (ioException e) {e.printstacktrace (); }} // uji kode/*coba {thread.sleep (5000); System.out.println (thread.currentThread (). GetName ()+", copyname ()+"); } catch (InterruptedException e) {E.PrintStackTrace (); }*/} // akhir run public void setSocket (soket soket) {this.socket = socket; } // Unduh metode/*** Sasaran: Tulis data di InputStream ke ide* lokal:* 1. Dapatkan aliran input, yang terbaik adalah meneruskannya dalam aliran input alih -alih langsung mendapatkannya dari soket, dan lewati untuk menggunakan unit test* 2. Baca nama file dari aliran input* 3. Buat file baru dan output file* 4. Bacalah kandungan file dari konten input* 3. IoException */public void down (inputStream in) melempar ioException {// variabel lokal char ch; char [] nameArr = char baru [256]; byte [] buf = byte baru [1024]; String name = ""; OutputStream out = null; // Logika Bisnis Coba {// Langkah 1: Dapatkan nama file dan buat aliran output file int i = 0; while ((ch = (char) in.read ())! = '/n') {nameArr [i ++] = ch; } //name=nameArr.ToString();///pis Kalimat ini tidak dapat mengubah array karakter menjadi string. Anda perlu menggunakan nama pernyataan berikut = string baru (nameArr); System.out.println ("File yang akan diunduh adalah:"+Nama); out = new fileoutputStream ("src // down //"+name); // Langkah 2: Tulis konten lain dalam aliran input ke file int len; while ((len = in.read (buf))! =-1) {out.write (buf, 0, len); } out.flush (); // capture capture} catch (ioException e) {e.printstacktrace (); // Tutup Sumber Daya} Akhirnya {// Pertanyaan: Bisakah dua tangkapan disatukan? Bagaimana cara menangani pengecualian saat menutup aliran? melampirkan(); out.close (); } // debug system.out.println (name); }} // akhir unggahan File Unggah Klien:
/ *** Klien yang menggunakan protokol TCP untuk mengimplementasikan fungsi unggah* @author yajun*/ kelas publik unggahclient {public static void main (string [] args) {unggahclient client = new unggahclient (); client.upload ("src // Kamis // aslisttest.java"); } / *** Fungsi: Unggah file ke server* 1. Tetapkan koneksi ke server* 2. Dapatkan aliran output* 3. Tulis konten file ke aliran output* 4. Dapatkan respons server* / private void unggah (nama string) {socket socket = null; Outputstream keluar; coba {socket = soket baru ("127.0.0.1", 5555); out = socket.getoutputStream (); write2outputStream (name, out); // capture capture} catch (unknownHostException e) {e.printstacktrace (); } catch (ioException e) {e.printstacktrace (); }} @Test public void testUpload () {unggah ("src // status.xml"); } / ** * FUNGSI: Lewati nama file dan aliran output, tulis file ke aliran output * @param path * @throws ioException * / private void write2outputStream (string path, outputStream out) melempar ioException {fileInputStream fis = null; byte [] buf = byte baru [1024]; String filename = ""; // Logika Bisnis Coba {// 1. Tulis nama file nama = path.substring (path.LastIndexof ('//')+1); System.out.println ("Nama file yang ingin Anda unggah adalah:"+nama file); out.write (filename.getbytes ()); out.write ('/n'); // 2. Tulis konten file fis = FileInputStream baru (path); int len; while ((len = fis.read (buf))! =-1) {out.write (buf, 0, len); } out.flush (); // penanganan pengecualian} catch (ioException e) {e.printstacktrace (); // tutup sumber daya} akhirnya {fis.close (); out.close (); }} // akhir unggahan @test public void testwrite2outputStream () melempar ioException {bytearrayoutputStream out = null; coba {out = new bytearrayoutputStream (); write2outputStream ("src // status.xml", out); System.out.println (out.toString ("UTF-8")); } catch (ioException e) {e.printstacktrace (); } akhirnya {out.close (); }}}Artikel ini telah dikompilasi menjadi "Ringkasan Teknik Operasi Upload Java", dan semua orang dipersilakan untuk belajar dan membaca.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.