java使用Socket實現文件上傳功能

本文實例為大傢分享瞭使用Socket實現文件上傳功能的具體代碼,供大傢參考,具體內容如下

文件上傳的步驟:

服務器端步驟:

1、創建ServerSocket

2、調用accept獲得客戶端Socket

3、定義字節數組

4、創建文件輸出流,獲得客戶端輸入流

5、循環讀取輸入流的字節,寫入到文件輸出流

客戶端步驟:

1、創建Socket

2、獲得socket對象輸出流

3、創建文件輸入流

4、循環讀取文件輸入流字節,寫入到輸出流

代碼實現:

服務器端:

public class FileServer {
    public static final int PORT = 8888;
    public static final String PATH = "D:\\upload\\";

    public void start(){
        System.out.println("start...");
        try (   //創建服務器端對象
                ServerSocket server = new ServerSocket(PORT);){
            while (true){
                Socket socket = server.accept();
                try (   //創建文件輸出流和網絡輸入流
                        DataInputStream in = new DataInputStream(socket.getInputStream());
                        //讀取哭護短發來的文件名,創建文件輸出流
                        FileOutputStream out = new FileOutputStream(PATH+in.readUTF())){
                        int len = 0;
                        byte[] buffer = new byte[1024];
                        while ((len = in.read(buffer)) != -1){
                            out.write(buffer,0,len);
                        }
                    System.out.println("服務器保存完畢!");
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        new FileServer().start();
    }

}

客戶端:

public class FileClient {
    /**
     * 發送文件
     */
    public void sendFile(String ip,int port,String path){
        File file = new File(path);
        try (
            //創建連接,創建文件輸入流,網絡輸出流
            Socket socket = new Socket(ip,port);
            InputStream in = new FileInputStream(path);
            DataOutputStream out = new DataOutputStream(socket.getOutputStream())){
            //先發送文件給服務器
            out.writeUTF(file.getName());
            out.flush();
            //讀取本地文件,寫入到網絡輸出流中
            int len = 0;
            byte[] buffer = new byte[1024];
            while ((len  = in.read(buffer)) != -1){
                out.write(buffer,0,len);
            }
            System.out.println("客戶端發送完畢!");
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        new FileClient().sendFile("192.168.31.226",8888,"C:\\Users\\admin\\Desktop\\C.txt");
    }
}

實現效果:

以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: