java设计一个基于TCP的文件上传功能,将文件从客户端上传到指定服务器。
时间: 2024-03-27 12:36:00 浏览: 56
好的,下面是一个简单的基于TCP的文件上传功能的Java代码示例:
服务器端代码:
```java
import java.io.*;
import java.net.*;
public class FileUploadServer {
public static void main(String[] args) throws Exception {
ServerSocket serverSocket = new ServerSocket(9999);
System.out.println("服务端已启动,等待客户端连接...");
while (true) {
Socket socket = serverSocket.accept();
System.out.println("客户端已连接:" + socket.getInetAddress().getHostAddress());
InputStream is = socket.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
// 读取文件名
byte[] fileNameBytes = new byte[1024];
int len = bis.read(fileNameBytes);
String fileName = new String(fileNameBytes, 0, len);
// 创建保存文件的目录
File fileDir = new File("upload");
if (!fileDir.exists()) {
fileDir.mkdir();
}
// 创建保存文件的路径
File file = new File(fileDir, fileName);
FileOutputStream fos = new FileOutputStream(file);
BufferedOutputStream bos = new BufferedOutputStream(fos);
// 读取文件内容并写入文件
byte[] buffer = new byte[1024];
int length;
while ((length = bis.read(buffer)) != -1) {
bos.write(buffer, 0, length);
}
bos.close();
fos.close();
bis.close();
is.close();
socket.close();
System.out.println("文件上传成功:" + fileName);
}
}
}
```
客户端代码:
```java
import java.io.*;
import java.net.*;
public class FileUploadClient {
public static void main(String[] args) throws Exception {
Socket socket = new Socket("localhost", 9999);
System.out.println("客户端已连接服务器");
File file = new File("test.txt");
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
OutputStream os = socket.getOutputStream();
BufferedOutputStream bos = new BufferedOutputStream(os);
// 发送文件名
byte[] fileNameBytes = file.getName().getBytes();
bos.write(fileNameBytes, 0, fileNameBytes.length);
bos.flush();
// 发送文件内容
byte[] buffer = new byte[1024];
int length;
while ((length = bis.read(buffer)) != -1) {
bos.write(buffer, 0, length);
}
bos.flush();
bis.close();
fis.close();
bos.close();
os.close();
socket.close();
System.out.println("文件上传成功:" + file.getName());
}
}
```
以上代码实现了一个简单的文件上传功能,客户端将指定文件发送给服务器端,服务器端接收到文件并保存到本地。需要注意的是,本示例中的文件上传是基于TCP协议实现的,因此需要保证客户端和服务器端都处于可靠的网络环境下,以避免文件传输中的数据丢失或损坏。
阅读全文