TCP實現文字檔案上傳
阿新 • • 發佈:2018-12-06
伺服器端:
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; //上傳伺服器檔案 public class UploadServer { public static void main(String[] args) throws IOException { System.out.println("上傳伺服器啟動了..."); //1.建立伺服器 ServerSocket ss=new ServerSocket(10000); //2.獲取socket物件 Socket s=ss.accept(); //列印ip地址 String ip=s.getInetAddress().getHostAddress(); System.out.println(ip+"...connected"); //3.獲取輸入流輸出流 BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream())); //將接收到的檔案輸出到server.txt BufferedWriter bw=new BufferedWriter(new FileWriter("server.txt")); String line=null; while((line=br.readLine())!=null){ bw.write(line); bw.newLine(); bw.flush(); } PrintWriter pw=new PrintWriter(s.getOutputStream(),true); pw.println("上傳成功"); br.close(); bw.close(); pw.close(); s.close(); ss.close(); } }
客戶端:
import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.InetAddress; import java.net.Socket; public class UploadClient { public static void main(String[] args) throws IOException { System.out.println("上傳客戶端啟動..."); //1.關聯檔案 File file=new File("d:\\1.txt"); //2.建立客戶端socket Socket s=new Socket(InetAddress.getLocalHost(),10000); //3.獲取輸入流輸出流 //輸入流 BufferedReader br=new BufferedReader(new FileReader(file)); //輸出流 PrintWriter pw=new PrintWriter(s.getOutputStream(),true); //邊讀邊寫 讀檔案中的內容寫到客戶端 String line=null; while((line=br.readLine())!=null){ pw.println(line); } //告訴伺服器,客戶端寫完了 s.shutdownOutput(); //4.接收客戶端傳送過來的資料 BufferedReader br1=new BufferedReader(new InputStreamReader(s.getInputStream())); System.out.println(br1.readLine()); //5.關閉流 br.close(); pw.close(); br1.close(); s.close(); } }
執行結果:
伺服器控制檯:
客戶端控制檯:
同時在指定目錄下生成了server.txt檔案。