客戶端 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
看過文章之後歡迎留下您寶貴的意見喔!