日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

自己用java实现飞鸽传书 2 - 实现文件传输

發布時間:2023/11/29 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自己用java实现飞鸽传书 2 - 实现文件传输 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第二步:實現文件傳遞。

上一步只是從服務端傳遞了一個字符串到客戶端,這次需要對代碼進行調整,實現從服務端獲取文件,在客戶端將文件存入目標地址。

調整后的代碼:

服務端:

import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.net.ServerSocket; import java.net.Socket;public class Server {public static void main(String[] args){//創建服務端socket,用以網絡信息的接收ServerSocket serverSocket = null;try {//服務端socket使用本地IP,端口號使用36000serverSocket = new ServerSocket(36000);//保證服務端持續運行while(true){//接收網絡信息,未接收到則阻塞當前線程Socket socket = serverSocket.accept();//將文件信息寫入socket通信 writeFile(socket);//關閉socket,防止客戶端長時間等待 socket.close();}} catch (Exception e) {e.printStackTrace();}}/*** 將文件信息寫入socket通信流* @param socket* socket*/private static void writeFile(Socket socket){try{//獲取本地文件String filePath ="D:/test.pdf";//創建文件對象File file = new File(filePath);//使用DataOutputStream傳送文件信息DataOutputStream dos = new DataOutputStream(socket.getOutputStream());//寫入文件名 dos.writeUTF(file.getName());//寫入文件大小 dos.writeLong(file.length());//清空緩沖區 dos.flush();//使用DataInputStream將文件寫入DataInputStream dis = new DataInputStream( new FileInputStream(file) ); byte[] buffer = new byte[1024];int head = 0;while((head=dis.read(buffer)) > 0){dos.write(buffer, 0, head);}dis.close();dos.close();}catch(Exception e){e.printStackTrace();}} }

客戶端:

import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileOutputStream; import java.net.Socket;public class Client {public static void main(String[] args){DataInputStream input = null;Socket clientSocket = null;try {//創建客戶端socket,用以連接服務端clientSocket = new Socket("127.0.0.1", 36000);//讀取服務端發送的信息流input = new DataInputStream(clientSocket.getInputStream());String fileName = input.readUTF();long fileSize = input.readLong();System.out.println("收到服務端發過來的文件,文件名稱為:" + fileName + ",文件大小為:" + fileSize);//將文件讀入本地String savePath = "E:\\just a test.pdf";DataOutputStream fos = new DataOutputStream(new FileOutputStream(savePath));byte[] buffer = new byte[1024];int head = 0;while((head=input.read(buffer)) > 0){fos.write(buffer, 0, head);}fos.close();input.close();clientSocket.close();} catch (Exception e) {e.printStackTrace();}} }

本次文件流的傳送使用了DataOutputStream和DataInputStream,使用Data類型的字節流可以根據信息類型分別進行處理。

轉載于:https://www.cnblogs.com/amunote/p/4138059.html

總結

以上是生活随笔為你收集整理的自己用java实现飞鸽传书 2 - 实现文件传输的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。