Java網絡編程實現資源下載詳解【王道Java】

      網友投稿 923 2022-05-28

      一,前言

      有一個作業需求,如下:

      實現用戶端輸入需要下載的編號【存儲在數據庫里】,通過TCP連接,發出請求,客戶端響應,傳輸目標文件個用戶端。用戶端,保存傳輸過來的文件。

      二,實現資源下載

      功能需求:

      1-在服務器的硬盤創建一個目錄,目錄中存放供客戶端下載的資源文件。

      2-創建數據庫表,表中存放資源文件的編號和資源文件的地址。

      我的數據庫截圖,和服務端目標路徑如下圖。

      三,資源下載的客戶端

      功能需求:

      1-客戶端輸入要下載的資源編號

      2-將編號發送給服務器

      3-接收服務器的資源,保存到文件

      服務器的ip,本機:

      InetAddress ip=InetAddress.getLocalHost(); Socket client=new Socket(ip, port);

      向服務器發送資源編號,編號—鍵盤輸入。

      String no;//編號 String name;

      上述代碼解釋:

      no變量為編號,name變量為下載資源另存為的名稱。

      輸入下載資源的編號和輸入下載資源另存為的名稱:

      System.out.println("輸入下載資源的編號:"); no=scanner.next(); System.out.println("輸入下載資源另存為的名稱:"); name=scanner.next();

      no編號發送給服務器

      下載服務器發送來的資源: ```java OutputStream out=client.getOutputStream(); out.write(no.getBytes()); System.out.println("下載服務器發送來的資源"); InputStream in=client.getInputStream();

      字節數組---->保存到文件。

      保存文件的路徑名。

      File file=new File("E:/tcpcont/client/"+name+".jpg");

      使用io流。保存文件。下載完成

      FileOutputStream fos=new FileOutputStream(file); byte[]buf=new byte[1024*10]; int len; while((len=in.read(buf))!=-1){ fos.write(buf,0,len); } fos.close(); client.close(); System.out.println("下載完成");

      四,資源下載的服務器端

      功能需求:

      1-接收客戶端的編號

      2-在資源表中查找對應資源的地址

      3-將資源發送給客戶端

      聲明自己的端口

      int port=10010;

      服務器的ip,本機

      InetAddress ip=InetAddress.getLocalHost(); ServerSocket server=new ServerSocket(port);

      接收客戶端

      阻塞式的方法,沒有客戶端接入,就會一直等待。

      Socket client=server.accept();

      接收一個資源編號。編號:

      InputStream in=client.getInputStream();

      將流中的數據讀入到buf數組

      連接數據庫,執行sql語句:

      查詢resource數據庫里,uid為目標值。

      Connection conn=JDBCUtils.getConnection(); String sql="SELECT * FROM resource WHERE uid=?"; PreparedStatement pStatement=conn.prepareStatement(sql); pStatement.setString(1,no); ResultSet rs=pStatement.executeQuery();

      獲取返回指針。

      使用while函數遍歷指針。

      while(rs.next()) {

      獲取到對應值。

      int id = rs.getInt("uid"); String url = rs.getString("url");

      將讀入的數據寫入到輸出流,通知客戶端,傳輸結束了。

      實驗總結:理解tcp的三次握手與連接的建立。

      客戶端:

      1,創建客戶端的socket,指定客戶端的IP對象和端口。

      2,創建客戶端的對象,進行數據傳輸。

      3,傳輸或者接受數據。

      4,關閉

      服務端:

      1,創建在指定端口上的服務端對象ServerSocket。

      2,獲取到在指定端口上監聽到對應的客戶端socket對象。

      Java網絡編程之實現資源下載詳解【王道Java】

      3,傳輸數據/接收數據。

      4,關閉流。

      五,最后

      有一定的心得。了解了tcp的傳輸原理。

      成功完成需求。實現用戶端輸入需要下載的編號【存儲在數據庫里】,通過TCP連接,發出請求,客戶端響應,傳輸目標文件個用戶端。用戶端,保存傳輸過來的文件。

      Java 網絡

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Hadoop安裝教程(單機/偽分布式配置)
      下一篇:vagrant系列四:vagrant搭建redis與redis的監控程序redis-stat
      相關文章
      久久久久久亚洲精品无码| 亚洲最大视频网站| 亚洲精品国产综合久久久久紧| 亚洲国产成人va在线观看网址| 亚洲性一级理论片在线观看| 91亚洲国产成人久久精品网站| 亚洲第一精品在线视频| 亚洲日韩图片专区第1页| 亚洲资源在线观看| 91亚洲自偷手机在线观看| 亚洲色图.com| 亚洲av永久无码精品天堂久久 | 亚洲国产精品无码av| 久久精品国产精品亚洲精品| 日韩亚洲变态另类中文| 国产精品亚洲成在人线| 亚洲AV无码成人精品区天堂| 久久久久亚洲精品无码系列| 久久久亚洲欧洲日产国码二区| 亚洲欧洲国产精品久久| 久久精品国产亚洲av麻豆图片 | 亚洲综合日韩久久成人AV| 亚洲av最新在线网址| 激情内射亚洲一区二区三区| 亚洲白色白色永久观看| 亚洲人成人网毛片在线播放| 亚洲国产精品网站在线播放| 国产成人不卡亚洲精品91| 亚洲色偷拍区另类无码专区| 亚洲国产另类久久久精品小说| 久久久久亚洲AV成人无码| 亚洲精品动漫在线| 美女视频黄免费亚洲| 国产精品亚洲一区二区三区| 4338×亚洲全国最大色成网站| 黑人精品videos亚洲人| 亚洲精品亚洲人成在线观看麻豆 | 国产偷国产偷亚洲高清日韩 | 亚洲综合成人婷婷五月网址| 婷婷亚洲综合五月天小说在线| 国产成人亚洲精品影院|