java網路程式設計--socket上傳檔案
阿新 • • 發佈:2019-02-01
直接程式碼不多說!
服務端:
package scoket.file.server; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.*;; public class FileServer { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub try { ServerSocket server = new ServerSocket(8888); Socket socket = new Socket(); while(true){ socket = server.accept(); InputStream is = socket.getInputStream(); OutputStream os = socket.getOutputStream(); byte[] b = new byte[1024]; //1、得到檔名 int a = is.read(b); String filename = new String(b, 0, a); System.out.println("接受到的檔名為:"+filename); String houzhui = filename.substring(filename.indexOf("."), filename.length()); String rand = String.valueOf((int) (Math.random() * 100000)); filename = rand+houzhui; System.out.println("新生成的檔名為:"+filename); FileOutputStream fos = new FileOutputStream("f:\\"+filename); int length = 0; while((length=is.read(b))!=-1){ //2、把socket輸入流寫到檔案輸出流中去 fos.write(b, 0, length); } //fos.flush(); fos.close(); os.flush(); os.close(); is.close(); socket.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
客戶端
package scoket.file.client; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException; public class FileCilent { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub try { Socket client = new Socket("192.168.3.28", 8888); InputStream is = client.getInputStream(); OutputStream os = client.getOutputStream(); String filepath="e:\\MyServer.java"; File file = new File(filepath); String filename = file.getName(); System.out.println("send's file name:"+filename); //1、傳送檔名 os.write(filename.getBytes()); FileInputStream fis = new FileInputStream(file); byte[] b = new byte[1024]; int length = 0; while((length=fis.read(b))!=-1){ //2、把檔案寫入socket輸出流 os.write(b, 0, length); } os.close(); fis.close(); is.close(); System.out.println("send over"); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }