[Java] File transfer server and client

Idea: The
client sends files to the server, and the server is responsible for receiving and storing the files.

The following code tests pass, create two new projects in IDEA, the files of each project are as follows:

File transfer server side:

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    
    

    private static final int PORT = 8888;

    public static void main(String[] args) {
    
    
        try {
    
    
            // 创建socket
            ServerSocket serverSocket = new ServerSocket(PORT);
            System.out.println("Listening on port " + PORT);

            // 监听客户端连接
            Socket socket = serverSocket.accept();

            // 接收客户端发来的文件
            BufferedReader reader = new BufferedReader(
                    new InputStreamReader(socket.getInputStream())
            );

            // 将文件存储在本地
            PrintWriter writer = new PrintWriter(
                    new FileOutputStream("e:\\djtest\\receive\\just.txt", true)
            );

            // 真正的存储过程:逐行读取并存储
            String line = null;
            while((line = reader.readLine()) != null){
    
    
                writer.println(line);
            }
            writer.close();

            // 返回信息给客户端
            PrintWriter responseWriter = new PrintWriter(socket.getOutputStream(), true);//一定要加true
            responseWriter.println("服务端:接收完毕!");

            // 释放系统资源
            socket.close();
            serverSocket.close();


        } catch (IOException e) {
    
    
            e.printStackTrace();
        }
    }
}

File transfer client:

import java.io.*;
import java.net.Socket;

public class Client {
    
    

    private static final String HOST_IP = "192.168.43.43";
    private static final int PORT = 8888;

    public static void main(String[] args) {
    
    

        try {
    
    
            // 创建套接字
            Socket socket = new Socket(HOST_IP, PORT);

            // 按行读取文件
            BufferedReader reader = new BufferedReader(
                    new InputStreamReader(new FileInputStream("e:\\djtest\\send\\just.txt"))
            );

            // 将文件写入网络
            PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);

            // 真正的发送过程:逐行写入网络
            String line = null;
            while((line = reader.readLine()) != null){
    
    
                System.out.println(line);
                writer.println(line);
            }
            socket.shutdownOutput();

            // 接收服务端返回的信息
            BufferedReader respReader = new BufferedReader(
                    new InputStreamReader(socket.getInputStream())
            );

            // 将服务端返回的信息打印出来
            String response = respReader.readLine();
            System.out.println(response);

            // 把资源还给系统
            writer.close();
            reader.close();
            respReader.close();
            socket.close();

        } catch (IOException e) {
    
    
            e.printStackTrace();
        }
    }
}

Guess you like

Origin blog.csdn.net/qq_30885821/article/details/109326210