亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

java實現客戶端向服務器發送文件

2024-07-13 10:16:35
字體:
來源:轉載
供稿:網友

本文實例為大家分享了java實現客戶端向服務器發送文件的具體代碼,供大家參考,具體內容如下

服務器源代碼:

import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.ServerSocket; import java.net.Socket;   /**  *  * 文件名:ServerReceive.java  * 實現功能:作為服務器接收客戶端發送的文件  *  * 具體實現過程:  * 1、建立SocketServer,等待客戶端的連接  * 2、當有客戶端連接的時候,按照雙方的約定,這時要讀取一行數據  *   其中保存客戶端要發送的文件名和文件大小信息  * 3、根據文件名在本地創建文件,并建立好流通信  * 4、循環接收數據包,將數據包寫入文件  * 5、當接收數據的長度等于提前文件發過來的文件長度,即表示文件接收完畢,關閉文件  * 6、文件接收工作結束  *  *  * 【注:此代碼僅為演示客戶端與服務器傳送文件使用,  *   每一個數據包之前沒有文件協議命令  *   具體的協議傳輸和文件傳出的使用階段可根據自己程序自行放置】  *  *  * 作者:小菜鳥  * 創建時間:2014-08-19  *  * */  public class ServerReceive {    public static void main(String[] args) {          /**與服務器建立連接的通信句柄*/     ServerSocket ss = null;     Socket s = null;          /**定義用于在接收后在本地創建的文件對象和文件輸出流對象*/     File file = null;     FileOutputStream fos = null;          /**定義輸入流,使用socket的inputStream對數據包進行輸入*/     InputStream is = null;          /**定義byte數組來作為數據包的存儲數據包*/     byte[] buffer = new byte[4096 * 5];          /**用來接收文件發送請求的字符串*/     String comm = null;               /**建立socekt通信,等待服務器進行連接*/     try {       ss = new ServerSocket(4004);       s = ss.accept();     } catch (IOException e) {       e.printStackTrace();     }               /**讀取一行客戶端發送過來的約定信息*/     try {       InputStreamReader isr = new InputStreamReader(s.getInputStream());       BufferedReader br = new BufferedReader(isr);       comm = br.readLine();     } catch (IOException e) {       System.out.println("服務器與客戶端斷開連接");     }          /**開始解析客戶端發送過來的請求命令*/     int index = comm.indexOf("/#");          /**判斷協議是否為發送文件的協議*/     String xieyi = comm.substring(0, index);     if(!xieyi.equals("111")){       System.out.println("服務器收到的協議碼不正確");       return;     }          /**解析出文件的名字和大小*/     comm = comm.substring(index + 2);     index = comm.indexOf("/#");     String filename = comm.substring(0, index).trim();     String filesize = comm.substring(index + 2).trim();               /**創建空文件,用來進行接收文件*/     file = new File(filename);     if(!file.exists()){       try {         file.createNewFile();       } catch (IOException e) {         System.out.println("服務器端創建文件失敗");       }     }else{       /**在此也可以詢問是否覆蓋*/       System.out.println("本路徑已存在相同文件,進行覆蓋");     }          /**【以上就是客戶端代碼中寫到的服務器的準備部分】*/               /**      * 服務器接收文件的關鍵代碼*/     try {       /**將文件包裝到文件輸出流對象中*/       fos = new FileOutputStream(file);       long file_size = Long.parseLong(filesize);       is = s.getInputStream();       /**size為每次接收數據包的長度*/       int size = 0;       /**count用來記錄已接收到文件的長度*/       long count = 0;              /**使用while循環接收數據包*/       while(count < file_size){         /**從輸入流中讀取一個數據包*/         size = is.read(buffer);                  /**將剛剛讀取的數據包寫到本地文件中去*/         fos.write(buffer, 0, size);         fos.flush();                  /**將已接收到文件的長度+size*/         count += size;         System.out.println("服務器端接收到數據包,大小為" + size);       }            } catch (FileNotFoundException e) {       System.out.println("服務器寫文件失敗");     } catch (IOException e) {       System.out.println("服務器:客戶端斷開連接");     }finally{       /**        * 將打開的文件關閉        * 如有需要,也可以在此關閉socket連接        * */       try {         if(fos != null)           fos.close();       } catch (IOException e) {         e.printStackTrace();       }//catch (IOException e)     }//finally    }//public static void main(String[] args) }//public class ServerReceive 

客戶端源代碼:

import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.OutputStream; import java.io.PrintStream; import java.net.Socket;   /**  *  * 文件名:ClientSend.java  * 實現功能:作為客戶端向服務器發送一個文件  *  * 具體實現過程:  * 1、建立與服務器端的連接,IP:127.0.0.1, port:4004  * 2、將文件的名字和大小通過自定義的文件傳輸協議,發送到服務器  * 3、循環讀取本地文件,將文件打包發送到數據輸出流中  * 4、關閉文件,結束傳輸  *  * 【注:此代碼僅為演示客戶端與服務器傳送文件使用,  *   每一個數據包之前沒有文件協議命令  *   具體的協議傳輸和文件傳出的使用階段可根據自己程序自行放置】  *  *  * 作者:小菜鳥  * 創建時間:2014-08-19  *  * */  public class ClientSend {    public static void main(String[] args) {          /**與服務器建立連接的通信句柄*/     Socket s = null;          /**定義文件對象,即為要發送的文件      * 如果使用絕對路徑,不要忘記使用'/'和'/'的區別      * 具體區別,請讀者自行查詢      * */     File sendfile = new File("API.CHM");     /**定義文件輸入流,用來打開、讀取即將要發送的文件*/     FileInputStream fis = null;     /**定義byte數組來作為數據包的存儲數據包*/     byte[] buffer = new byte[4096 * 5];          /**定義輸出流,使用socket的outputStream對數據包進行輸出*/     OutputStream os = null;               /**檢查要發送的文件是否存在*/     if(!sendfile.exists()){       System.out.println("客戶端:要發送的文件不存在");       return;     }               /**與服務器建立連接*/     try {       s = new Socket("127.0.0.1", 4004);     }catch (IOException e) {       System.out.println("未連接到服務器");     }          /**用文件對象初始化fis對象      * 以便于可以提取出文件的大小      * */     try {       fis = new FileInputStream(sendfile);     } catch (FileNotFoundException e1) {       e1.printStackTrace();     }           /**首先先向服務器發送關于文件的信息,以便于服務器進行接收的相關準備工作      * 具體的準備工作,請查看服務器代碼。      *      * 發送的內容包括:發送文件協議碼(此處為111)/#文件名(帶后綴名)/#文件大小      * */     try {       PrintStream ps = new PrintStream(s.getOutputStream());       ps.println("111/#" + sendfile.getName() + "/#" + fis.available());       ps.flush();     } catch (IOException e) {       System.out.println("服務器連接中斷");     }               /**      * 此處睡眠2s,等待服務器把相關的工作準備好      * 也是為了保證網絡的延遲      * 讀者可自行選擇添加此代碼      * */     try {       Thread.sleep(2000);     } catch (InterruptedException e1) {       e1.printStackTrace();     }                    /**之前的準備工作結束之后      * 下面就是文件傳輸的關鍵代碼      * */     try {              /**獲取socket的OutputStream,以便向其中寫入數據包*/       os = s.getOutputStream();              /** size 用來記錄每次讀取文件的大小*/       int size = 0;              /**使用while循環讀取文件,直到文件讀取結束*/       while((size = fis.read(buffer)) != -1){         System.out.println("客戶端發送數據包,大小為" + size);         /**向輸出流中寫入剛剛讀到的數據包*/         os.write(buffer, 0, size);         /**刷新一下*/         os.flush();       }     } catch (FileNotFoundException e) {       System.out.println("客戶端讀取文件出錯");     } catch (IOException e) {       System.out.println("客戶端輸出文件出錯");     }finally{              /**        * 將打開的文件關閉        * 如有需要,也可以在此關閉socket連接        * */       try {         if(fis != null)           fis.close();       } catch (IOException e) {         System.out.println("客戶端文件關閉出錯");       }//catch (IOException e)     }//finally        }//public static void main(String[] args) }//public class ClientSend 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲美女在线观看| 成人天堂噜噜噜| 欧美精品18videos性欧| 97在线视频精品| 欧美在线播放视频| 92看片淫黄大片欧美看国产片| 日韩有码视频在线| 欧美日韩ab片| 成人乱人伦精品视频在线观看| 在线观看日韩专区| 国产精品美女久久久久久免费| 国产区精品在线观看| 欧美精品性视频| 国产精品一区久久| 在线成人激情黄色| 91av视频导航| 国产综合久久久久久| 国产视频丨精品|在线观看| 精品动漫一区二区三区| 久久免费视频在线观看| 亚洲变态欧美另类捆绑| 亚洲欧洲日产国码av系列天堂| 日韩精品视频免费| 国产精品一区二区三区毛片淫片| 欧美亚洲日本黄色| 秋霞成人午夜鲁丝一区二区三区| 欧美日韩性生活视频| 91精品国产综合久久香蕉的用户体验| 亚洲免费伊人电影在线观看av| 欧美日韩日本国产| 日韩精品在线免费播放| 91免费看片网站| 亚洲电影中文字幕| 91精品国产91久久久久久最新| 亚洲人成免费电影| 国产精品视频导航| 亚洲欧美日韩一区二区三区在线| 亚洲欧美国产精品va在线观看| 欧美肥臀大乳一区二区免费视频| 欧美日韩免费看| 亚洲欧洲日产国产网站| 国产精品视频内| 日韩欧美在线看| 久久99精品久久久久久噜噜| 国产精品一区二区三区成人| 欧美一级视频免费在线观看| 亚洲春色另类小说| 国产女精品视频网站免费| 国产亚洲精品久久久| 日韩电影在线观看免费| 国产精品678| 九九热这里只有精品6| 91精品久久久久久久久不口人| 欧美日韩亚洲精品内裤| 中文字幕成人精品久久不卡| 国产精品久久久久久久久粉嫩av| 国产精品丝袜白浆摸在线| 久久视频精品在线| 亚洲乱码av中文一区二区| 日韩在线国产精品| 欧美成人在线网站| 亚洲国产精品字幕| 国产综合香蕉五月婷在线| 亚洲va电影大全| 成人免费观看网址| 国产精品久久国产精品99gif| 热久久99这里有精品| 91免费综合在线| 久久精品欧美视频| 国产成人精品av| 日韩精品在线第一页| 91精品国产91久久久久福利| 在线观看91久久久久久| 日本久久久久久久久久久| 日韩最新中文字幕电影免费看| 热久久视久久精品18亚洲精品| 欧美另类在线观看| 亚洲一区二区在线| 亚洲人成在线免费观看| 欧美夜福利tv在线| 久久亚洲私人国产精品va| 日韩欧美中文字幕在线观看| 中文字幕视频在线免费欧美日韩综合在线看| 欧美视频在线免费| 国产精品久久久久福利| 欧美高清自拍一区| 中国china体内裑精亚洲片| 亚洲成人性视频| 美女黄色丝袜一区| 国产精品99蜜臀久久不卡二区| 96sao精品视频在线观看| 久久人人爽人人爽人人片av高清| 久久久av电影| 精品少妇v888av| 日本成人在线视频网址| 一区二区三区四区精品| 亚洲www永久成人夜色| 性欧美亚洲xxxx乳在线观看| 日本中文字幕久久看| 欧美日韩电影在线观看| 日韩av一区在线| 57pao国产精品一区| 日韩国产一区三区| 欧美亚洲在线视频| 成人日韩av在线| 一二美女精品欧洲| 亚洲成人教育av| 91精品久久久久久久久中文字幕| 成人精品久久久| 亚洲第一av在线| 亚洲最新av在线| 亚洲精品不卡在线| 国产z一区二区三区| 亚洲精品成人久久久| 日韩中文在线中文网三级| 91久久精品日日躁夜夜躁国产| 欧美亚洲日本黄色| 欧美黑人狂野猛交老妇| 国产色综合天天综合网| 4444欧美成人kkkk| 欧美国产日韩在线| 日韩有码片在线观看| 久久久噜噜噜久久中文字免| 欧美重口另类videos人妖| 亚洲专区在线视频| 亚洲第一精品福利| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美做爰性生交视频| 欧美成人午夜免费视在线看片| 性夜试看影院91社区| 久久全球大尺度高清视频| 青青久久av北条麻妃黑人| 欧美日韩一区二区三区在线免费观看| 在线播放精品一区二区三区| 欧美在线性爱视频| 国语自产在线不卡| 亚洲韩国欧洲国产日产av| 国产视频亚洲精品| 成人在线视频网| 欧美日韩一区免费| 日韩日本欧美亚洲| 久久91亚洲精品中文字幕奶水| 欧美性在线观看| 国产精品视频资源| 亚洲最大的免费| 97在线视频国产| 国产日韩欧美视频在线| 日韩在线欧美在线| 亚洲а∨天堂久久精品喷水| 亚洲午夜久久久久久久| 夜夜狂射影院欧美极品| 九九视频直播综合网| 日韩电影免费观看在线观看| 成人妇女免费播放久久久| 亚洲尤物视频网| 在线观看日韩欧美| 97久久伊人激情网| 久久久视频精品| 久久久成人精品视频| 伊人一区二区三区久久精品| 日韩精品在线观看网站| 国产精品久久久久久婷婷天堂| 精品国产一区二区在线| 久久久噜久噜久久综合|