[Java]ファイル転送サーバーとクライアント

アイデア:
クライアントはサーバーにファイルを送信し、サーバーはファイルの受信と保存を担当します。

次のコードテストに合格し、IDEAで2つの新しいプロジェクトを作成します。各プロジェクトのファイルは、次のとおりです。

ファイル転送サーバー側:

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();
        }
    }
}

ファイル転送クライアント:

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();
        }
    }
}

おすすめ

転載: blog.csdn.net/qq_30885821/article/details/109326210