Contoh ini membagikan kode spesifik untuk klien implementasi Java untuk mengirim file ke server untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
Kode Sumber Server:
impor java.io.bufferedReader; impor java.io.file; impor java.io.filenotfoundException; impor java.io.fileoutputStream; impor java.io.ioException; impor java.io.inputStreamReader; impor java.net.serversocket; impor java.net.socket; /*** Nama File: ServerReceive.java* Fungsi Implementasi: Sebagai server, menerima file yang dikirim oleh klien** Proses implementasi khusus:* 1. Menetapkan SocketServer dan menunggu klien untuk menghubungkan* 2. Ketika ada koneksi klien, sesuai dengan Perjanjian antara kedua pihak, Anda harus membaca baris data* yang menyimpan nama file dan informasi yang dikirim oleh kedua pihak yang dikirim oleh Klien* 4. Menerima paket data dalam satu loop dan menulis paket data ke file * 5. Ketika panjang data yang diterima sama dengan panjang file yang dikirim oleh file terlebih dahulu, itu berarti bahwa file telah diterima dan file ditutup * 6. Pekerjaan penerimaan file dan petak -paper yang lebih spesifik. Outflow dapat ditempatkan dengan sendirinya sesuai dengan program Anda sendiri] * * * Penulis: xiaoqiu * Waktu Penciptaan: 2014-08-19 * * */ Kelas Publik ServerReceive {public static void main (string [] args) {/ ** Pegangan komunikasi untuk membuat koneksi dengan server */ server ss = null; Soket s = null; / ** Tentukan objek file dan objek aliran output file yang dibuat secara lokal setelah penerimaan*/ file file = null; FileOutputStream fos = null; / ** Tentukan aliran input dan gunakan inputStream Socket untuk memasukkan paket*/ inputStream adalah = null; / ** Tentukan array byte untuk berfungsi sebagai paket penyimpanan untuk paket*/ byte [] buffer = byte baru [4096*5]; / ** string dudukan yang digunakan untuk menerima permintaan pengiriman file*/ string comm = null; / ** Atur komunikasi SOCEKT dan tunggu server untuk menghubungkan*/ coba {ss = server baru (4004); s = ss.accept (); } catch (ioException e) {e.printstacktrace (); } / ** Baca informasi konvensi yang dikirim oleh baris klien* / coba {inputStreamReader isr = new InputStreamReader (s.getInputStream ()); BufferedReader BR = BufferedReader baru (ISR); comm = br.readline (); } catch (ioException e) {System.out.println ("Server memutuskan dari klien"); }/** Mulai parse perintah permintaan yang dikirim oleh klien*/int index = comm.indexof ("/#"); / ** Diskusikan apakah protokol adalah protokol untuk mengirim file*/ string xieyi = comm.substring (0, index); if (! xieyi.equals ("111")) {System.out.println ("Kode protokol yang diterima oleh server salah"); kembali; } / ** Menguras nama dan ukuran file* / comm = comm.substring (indeks + 2); index = comm.indexof ("/#"); String filename = comm.substring (0, index) .trim (); String filesize = comm.substring (index + 2) .trim (); / ** Buat file kosong untuk menerima file*/ file = file baru (nama file); if (! file.exists ()) {coba {file.createNewFile (); } catch (ioException e) {System.out.println ("Pembuatan File Sisi Server Gagal"); }} else { / ** Anda juga dapat bertanya apakah akan menimpa* / system.out.println ("File yang sama sudah ada di jalur ini, ditimpa"); } / ** [Di atas adalah bagian yang disiapkan dari server yang ditulis dalam kode klien]* / / ***Kode kunci untuk server untuk menerima file* / coba { / ** Bungkus file ke dalam objek aliran output file* / fos = FileOutputStream baru (file); long file_size = long.parselong (fileSize); is = s.getInputStream (); / ** Ukuran adalah panjang masing -masing paket yang diterima*/ int ukuran = 0; / ** Hitungan digunakan untuk merekam panjang file yang diterima*/ jumlah panjang = 0; / ** menerima paket menggunakan while loop*/ while (count <file_size) {/ ** Baca paket dari aliran input*/ size = is.read (buffer); / ** Tulis paket yang baru saja Anda baca ke file lokal*/ fos.write (buffer, 0, size); fos.flush (); / ** Panjang file yang diterima +ukuran*/ count += ukuran; System.out.println ("Server menerima paket, ukurannya" + ukuran); }} catch (FileNotFoundException e) {System.out.println ("Server gagal menulis file"); } catch (ioException e) {System.out.println ("Server: Client Disconnect"); } akhirnya { / *** Tutup file yang dibuka* jika perlu, Anda juga dapat menutup koneksi soket di sini** / coba {if (fos! = null) fos.close (); } catch (ioException e) {e.printstacktrace (); } // catch (ioException e)} // akhirnya} // public static void main (string [] args)} // kelas publik serverreceiveKode Sumber Klien:
impor java.io.file; impor java.io.fileInputStream; impor java.io.filenotfoundException; impor java.io.ioException; impor java.io.outputStream; impor java.io.printstream; impor java.net.socket; /** * * Nama File: ClientSend.java * Fungsi Implementasi: Kirim file ke server sebagai klien * * Proses implementasi spesifik: * 1. Menetapkan koneksi dengan server, IP: 127.0.0.1, port: 4004 * 2. Kirim nama file ke server ini melalui Protokol Transfer Kustom *. hanya digunakan untuk menunjukkan transfer file antara klien dan server. * Tidak ada perintah protokol file sebelum setiap paket data * Transmisi protokol spesifik dan tahap penggunaan keluar file dapat ditempatkan sesuai dengan program Anda sendiri] * * Author: Novice * Penciptaan Waktu: 2014-08-19 * * */ Kelas Publik Clientend {public static Main (String [] args) {/ ** Handle Class untuk membangun koneksi dengan server public static * (string [] ngs) {/ ** HANDEKOMMENSI COMMUNSIMASI PUBLIK DENGAN PUBLIK DENGAN Server * PUBLIK * NULL; /** Tentukan objek file, yaitu file yang akan dikirim*jika Anda menggunakan jalur absolut, jangan lupa untuk menggunakan perbedaan antara '/' dan '/' ** untuk perbedaan spesifik, silakan permintaan pembaca sendiri**/file sendFile = file baru ("api.chm"); / ** Tentukan aliran input file untuk membuka dan membaca file yang akan dikirim*/ fileInputStream fis = null; / ** Tentukan array byte yang akan digunakan sebagai paket penyimpanan paket data*/ byte [] buffer = byte baru [4096*5]; / ** Tentukan aliran output dan gunakan Socket's OutputStream untuk mengeluarkan paket*/ outputStream os = null; / ** Periksa apakah file yang akan dikirim ada*/ if (! SendFile.exists ()) {System.out.println ("Klien: File yang akan dikirim tidak ada"); kembali; } / ** Buat koneksi dengan server* / coba {s = soket baru ("127.0.0.1", 4004); } catch (ioException e) {System.out.println ("Tidak terhubung ke server"); } / ** Inisialisasi objek FIS dengan objek file*sehingga ukuran file dapat diekstraksi** / coba {fis = FileInputStream baru (sendFile); } catch (FileNotFoundException E1) {e1.printstacktrace (); } /** Pertama -tama mengirim informasi tentang file ke server untuk memfasilitasi server untuk menerima persiapan terkait*untuk persiapan tertentu, silakan periksa kode server. * * Konten yang dikirim termasuk: Mengirim kode protokol file (berikut adalah 111)/#Nama file (dengan nama akhiran)/#ukuran file * */coba {printStream ps = printStream baru (s.getoutputStream ()); ps.println ("111/#" + sendFile.getName () + "/#" + fis.available ()); ps.flush (); } catch (ioException e) {System.out.println ("Server Connection Interruption"); } / *** Tidur di sini selama 2 detik, menunggu server untuk menyiapkan pekerjaan yang relevan* juga untuk memastikan penundaan jaringan* Pembaca dapat memilih untuk menambahkan kode ini** / coba {thread.sleep (2000); } catch (InterruptedException E1) {E1.PrintStackTrace (); } / ** Setelah pekerjaan persiapan sebelumnya selesai*Berikut ini adalah kode kunci untuk transfer file** / coba { / ** Dapatkan outputStream dari soket untuk menulis paket untuk itu* / os = s.getoutputStream (); / ** Ukuran digunakan untuk merekam ukuran setiap file baca*/ int ukuran = 0; / ** Baca file menggunakan while loop sampai bacaan file selesai*/ while ((size = fis.read (buffer))! = -1) {System.out.println ("Klien mengirimkan paket, ukurannya" + ukuran); / ** Tulis paket yang baru saja Anda baca ke aliran output*/ os.write (buffer, 0, size); / ** Refresh*/ os.flush (); }} catch (FileNotFoundException e) {System.out.println ("Kesalahan File Bacaan Klien"); } catch (ioException e) {System.out.println ("Kesalahan file output klien"); } akhirnya { / *** Tutup file yang dibuka* jika perlu, Anda juga dapat menutup koneksi soket di sini** / coba {if (fis! = null) fis.close (); } catch (ioException e) {System.out.println ("Kesalahan Penutupan File Klien"); } // catch (ioException e)} // akhirnya} // public static void main (string [] args)} // klien kelas publikendDi 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.