以下是一个简单的Java程序示例,用于设计一个基于TCP协议的文件下载服务器:

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

public class FileServer {
    public static void main(String[] args) {
        try {
            // 创建服务器套接字,监听指定端口
            ServerSocket serverSocket = new ServerSocket(8888);
            System.out.println("服务器已启动,等待客户端连接...");

            while (true) {
                // 接受客户端连接
                Socket clientSocket = serverSocket.accept();
                System.out.println("客户端连接成功:" + clientSocket.getInetAddress().getHostAddress());

                // 创建输入流,读取客户端请求的文件名
                BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
                String fileName = reader.readLine();
                System.out.println("客户端请求下载文件:" + fileName);

                // 创建文件输入流,读取文件内容
                File file = new File(fileName);
                FileInputStream fileInputStream = new FileInputStream(file);

                // 创建输出流,发送文件内容给客户端
                OutputStream outputStream = clientSocket.getOutputStream();
                byte[] buffer = new byte[1024];
                int bytesRead;
                while ((bytesRead = fileInputStream.read(buffer)) != -1) {
                    outputStream.write(buffer, 0, bytesRead);
                }

                System.out.println("文件发送完成");

                // 关闭流和套接字
                fileInputStream.close();
                outputStream.close();
                reader.close();
                clientSocket.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

客户端可以使用java.net.Socket类来连接服务器并下载文件。以下是一个简单的Java程序示例:

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

public class FileClient {
    public static void main(String[] args) {
        try {
            // 创建客户端套接字,连接服务器
            Socket socket = new Socket("localhost", 8888);

            // 创建输出流,发送文件名给服务器
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
            writer.write("example.txt");
            writer.newLine();
            writer.flush();

            // 创建文件输出流,接收服务器发送的文件内容
            FileOutputStream fileOutputStream = new FileOutputStream("downloadedFile.txt");
            InputStream inputStream = socket.getInputStream();
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = inputStream.read(buffer)) != -1) {
                fileOutputStream.write(buffer, 0, bytesRead);
            }

            System.out.println("文件下载完成");

            // 关闭流和套接字
            fileOutputStream.close();
            writer.close();
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

请注意,这只是一个简单的示例,没有进行错误处理和并发处理。在实际应用中,可能需要更复杂的逻辑来处理多个客户端请求和错误情况

java程序设计一个服务器完成文件下载功能?

原文地址: http://www.cveoy.top/t/topic/iGJ2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录