java实现tcp多文件传输
时间: 2023-11-29 17:05:36 浏览: 41
以下是Java实现TCP多文件传输的示例代码:
服务端代码:
```java
import java.io.*;
import java.net.*;
public class TCPServer {
public static void main(String[] args) throws Exception {
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("服务器已启动,等待客户端连接...");
while (true) {
Socket socket = serverSocket.accept();
System.out.println("客户端已连接,客户端地址:" + socket.getInetAddress().getHostAddress());
// 接收文件名
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String fileName = br.readLine();
System.out.println("客户端请求下载文件:" + fileName);
// 发送文件
File file = new File(fileName);
if (!file.exists()) {
System.out.println("文件不存在!");
socket.close();
continue;
}
FileInputStream fis = new FileInputStream(file);
OutputStream os = socket.getOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) != -1) {
os.write(buffer, 0, len);
}
fis.close();
os.close();
socket.close();
System.out.println("文件发送完成!");
}
}
}
```
客户端代码:
```java
import java.io.*;
import java.net.*;
public class TCPClient {
public static void main(String[] args) throws Exception {
Socket socket = new Socket("localhost", 8888);
System.out.println("连接服务器成功!");
// 发送文件名
String fileName = "C:/temp/1.jpg";
PrintWriter pw = new PrintWriter(socket.getOutputStream());
pw.println(fileName);
pw.flush();
// 接收文件
InputStream is = socket.getInputStream();
FileOutputStream fos = new FileOutputStream("C:/temp/2.jpg"); byte[] buffer = new byte[1024];
int len;
while ((len = is.read(buffer)) != -1) {
fos.write(buffer, 0, len);
}
fos.close();
is.close();
socket.close();
System.out.println("文件接收完成!");
}
}
```
以上代码实现了一个简单的TCP文件传输,服务端监听客户端连接,接收客户端发送的文件名,发送文件给客户端;客户端连接服务端,发送文件名给服务端,接收服务端发送的文件。你可以根据自己的需求对代码进行修改和扩展。