網路程式設計:上傳檔案
阿新 • • 發佈:2018-12-19
伺服器端
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(); } } } }