请提供客户端和服务端的代码
时间: 2023-11-02 21:05:00 浏览: 45
好的,以下是客户端和服务端的代码。
服务端代码:
```java
import java.io.*;
import java.net.*;
import java.util.*;
public class FileTransferServer {
public static void main(String[] args) {
try {
// Create a server socket
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("Server is running on port 8888...");
while (true) {
// Accept a client connection
Socket clientSocket = serverSocket.accept();
System.out.println("Accepted connection from " + clientSocket.getInetAddress());
// Receive the source folder path from the client
BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String sourceFolder = reader.readLine();
System.out.println("Received source folder path: " + sourceFolder);
// Get the list of files in the source folder
File folder = new File(sourceFolder);
File[] files = folder.listFiles();
StringBuilder fileListBuilder = new StringBuilder();
for (File file : files) {
fileListBuilder.append(file.getName()).append(",");
}
String fileList = fileListBuilder.toString();
System.out.println("File list: " + fileList);
// Send the file list to the client
PrintWriter writer = new PrintWriter(clientSocket.getOutputStream(), true);
writer.println(fileList);
// Loop through the files and transfer them to the client
for (File file : files) {
FileInputStream fileStream = new FileInputStream(file);
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fileStream.read(buffer)) != -1) {
clientSocket.getOutputStream().write(buffer, 0, bytesRead);
}
fileStream.close();
}
// Clean up
writer.close();
reader.close();
clientSocket.close();
System.out.println("Transfer complete.");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
客户端代码:
```java
import java.io.*;
import java.net.*;
public class FileTransferClient {
public static void main(String[] args) {
String serverHost = "server.host.com";
String sourceFolder = "/path/to/source/folder";
String destinationFolder = "/path/to/destination/folder";
try {
// Connect to the server
Socket socket = new Socket(serverHost, 8888);
BufferedOutputStream stream = new BufferedOutputStream(socket.getOutputStream());
// Send the source folder path to the server
PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);
writer.println(sourceFolder);
// Receive the file list from the server
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String fileList = reader.readLine();
// Loop through the files and transfer them to the destination folder
String[] files = fileList.split(",");
for (String file : files) {
String filePath = destinationFolder + "/" + file;
FileOutputStream fileStream = new FileOutputStream(filePath);
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = socket.getInputStream().read(buffer)) != -1) {
fileStream.write(buffer, 0, bytesRead);
}
fileStream.close();
}
// Clean up
writer.close();
reader.close();
stream.close();
socket.close();
System.out.println("Transfer complete.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在这个示例中,我们假设客户端和服务端都运行在端口 8888 上,并且使用 TCP 协议进行通信。在服务端代码中,我们首先创建一个服务器套接字,并在循环中等待客户端连接。一旦客户端连接,我们接收源文件夹路径,然后获取文件列表并将其发送给客户端。接下来,我们循环遍历文件并将它们传输到客户端。在客户端代码中,我们首先连接到服务器,然后向服务器发送源文件夹路径并接收文件列表。接下来,我们循环遍历文件,并将它们传输到目标文件夹。最后,我们清理所有连接和流。
需要注意的是,在实际应用中,您需要考虑更多的边缘情况和错误处理。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)