创建一个简单文件下载功能,包括服务器和客户端,要求: 1. 服务器模板:FileServer.java。编写一个方法,它能使服务器接收来自客户的文件名字符串,试图打开这个文件并通过socket将它传回到客户。
时间: 2024-12-08 17:24:34 浏览: 20
创建一个简单的文件下载功能需要在服务器端和客户端分别编写代码。这里我会提供一个基本的服务器模板 `FileServer.java` 和一个简化的客户端示例。
首先,让我们看下服务器部分 (`FileServer.java`):
```java
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class FileServer {
private static final int PORT = 8000; // 设置服务器监听的端口
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(PORT);
System.out.println("Server is running on port " + PORT);
while (true) { // 无限循环,直到服务器关闭
Socket clientSocket = serverSocket.accept(); // 接受新连接
try (BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true)) {
String fileNameRequest = in.readLine(); // 读取客户端发送的文件名请求
if (fileNameRequest != null) {
File file = new File(fileNameRequest); // 检查文件是否存在
if (file.exists()) {
byte[] fileData = Files.readAllBytes(file.toPath()); // 读取文件内容
out.print(file.getName()); // 发送文件名确认
out.println("Content-Disposition: attachment; filename=\"" + file.getName() + "\""); // 设置响应头
out.flush();
out.write(fileData); // 将数据发送给客户端
out.close();
} else {
out.println("File not found.");
}
} else {
out.println("Invalid request format.");
}
} finally {
clientSocket.close(); // 关闭连接
}
}
}
}
```
阅读全文