客戶端 client
伺服端 server
程式碼專案下載:(因內含測試用影片所以檔案較大)
載點1
載點2
未含影片檔案程式碼下載
載點1
載點2
import java.io.*; import java.net.*; public class Client{ public static void main(String[] args)throws Exception{ //使用本地文件系統接受網絡數據並存為新文件 String filename="newFile.mp4"; int port=8080; // 通過Socket連接文件服務器 System.out.println("準備連接server端"); Socket server=null; try { server=new Socket(InetAddress.getLocalHost(),port); } catch (java.io.IOException e) { System.out.println("與Server連線失敗,可能是Server尚未開啟"); System.out.println("錯誤訊息IOException :" + e.toString()); System.out.println("\n關閉程式"); return; } System.out.println("連線成功"); //創建網絡接受流接受服務器文件數據 System.out.println("準備接收檔案"); InputStream netIn=server.getInputStream(); System.out.println("接收檔案的新檔名為:"+filename); File file=new File(filename);//生成的文件名 file.createNewFile(); InputStream in=new DataInputStream(new BufferedInputStream(netIn)); RandomAccessFile raf=new RandomAccessFile(file,"rw"); //創建緩衝區緩衝網絡數據 System.out.println("開始接收檔案"); byte[] buf=new byte[2048]; int num=in.read(buf); while(num!=(-1)){//是否讀完所有數據 raf.write(buf,0,num);//將數據寫往文件 raf.skipBytes(num);//順序寫文件字節 num=in.read(buf);//繼續從網絡中讀取文件 } System.out.println("接收檔案完成"); in.close(); raf.close(); } }
伺服端 server
import java.io.*; import java.net.*; public class FileServer{ public static void main(String[] args)throws Exception{ String filename="18.mp4";//文件名,要傳輸的文件 int port=8080; File file=new File(filename); System.out.println("準備傳送"+filename+"檔案"); //檢查是否有此檔案 FileInputStream fos=null; try { fos=new FileInputStream(file); } catch (java.io.IOException e) { System.out.println("找不到檔案"+filename); System.out.println("錯誤訊息IOException :" + e.toString()); System.out.println("\n關閉程式"); return; } //創建Server 接受客戶請求 //默認port=8080 System.out.println("等待 client連線"); ServerSocket ss=new ServerSocket(port); Socket client=ss.accept(); System.out.println("Client 連線進來"); //數據封裝 System.out.println("準備發送檔案"); OutputStream netOut=client.getOutputStream(); OutputStream temp=new DataOutputStream(new BufferedOutputStream(netOut)); //創建文件讀取緩衝區 System.out.println("開始傳送檔案"); byte[] buf=new byte[2048]; int num=fos.read(buf); while(num!=(-1)){//是否讀完文件 temp.write(buf,0,num);//把文件數據寫出網絡緩衝區 temp.flush();//刷新緩衝區把數據寫往客戶端 num=fos.read(buf);//繼續從文件中讀取數據 } System.out.println("傳送檔案完成"); fos.close(); temp.close(); } }
程式碼專案下載:(因內含測試用影片所以檔案較大)
載點1
載點2
未含影片檔案程式碼下載
載點1
載點2
沒有留言:
張貼留言
俗話說
凡走過必留下痕跡,凡住過必留下鄰居
凡爬過必留下樓梯,凡來過必留下IP
看過文章之後歡迎留下您寶貴的意見喔!