1. 程式人生 > >網路程式設計:上傳檔案

網路程式設計:上傳檔案

伺服器端

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.net.ServerSocket;
import java.net.Socket;

/** 
* @author  萬星明
* @version 建立時間:2018年10月22日 下午5:16:27 
* 類說明 

*/
public class Server {
	public static void main(String[] args) throws Exception {
		
		//建立socket伺服器物件
		@SuppressWarnings("resource")
		ServerSocket ss = new ServerSocket(9999);
		System.out.println("與伺服器連線中");
		//監聽客戶端並接收一個客戶端
		Socket socket = ss.accept();
		//建立網路讀取流
		BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
		//建立本地寫入流
		BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(""));
		//邊讀取網路中的資料,邊寫入本地
		byte[] b = new byte[1024];
		int len = bis.read(b);
		while(len!=-1) {
			//邊讀邊寫
			bos.write(b, 0, len);
			bos.flush();
			len = bis.read(b);
			
		}
		System.out.println("客戶端上傳成功");
		//關流
		ObjectClose.close(bis,bos);
	}
}

客戶端

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.net.Socket;
/** 
* @author  萬星明
* @version 建立時間:2018年10月22日 下午5:09:43 
*/
public class Client {
	public static void main(String[] args) throws Exception {
		
		//建立socket
		Socket socket = new Socket("127.0.0.1",9999);
		//建立本地的讀取流
		BufferedInputStream bis = new BufferedInputStream(new FileInputStream(""));
		//建立網路的寫入流,將讀取的檔案內容讀取到伺服器
		BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
		//邊從本地讀取檔案,邊將檔案寫入到網路上的服務上
		byte[] b = new byte[1024];
		int len = bis.read(b);
		while(len!=-1) {
			//邊讀取邊寫入網路中
			bos.write(b,0,len);
			bos.flush();
			
			len = bis.read(b);
			
		}
		System.out.println("上傳結束");
		//關流
		ObjectClose.close(bis,bos,socket);
		
	}
}

工具類,用來關閉流

import java.io.Closeable;


/** 
* @author  萬星明
* @version 建立時間:2018年10月22日 下午4:05:24 
* 類說明 

*/
public class ObjectClose  {
	
	//關閉方法,關閉所有
	public static void close(Closeable...c) {
		//遍歷傳入的,關閉
		for (Closeable closeable : c) {
			try {
				closeable.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		
		
	}
}