📅  最后修改于: 2023-12-03 15:01:34.711000             🧑  作者: Mango
本文将介绍如何通过Java套接字传输文件。套接字是一种协议,它允许不同计算机之间的进程之间传递数据。Java提供了Socket和ServerSocket类,可以使用这些类来实现套接字通信。
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
public class FileClient {
public static void main(String[] args) throws IOException {
// 1. 创建Socket对象,指定要连接的服务器地址和端口号
Socket socket = new Socket("localhost", 9999);
// 2. 创建文件对象
File file = new File("data.txt");
// 3. 创建文件输入流
FileInputStream fis = new FileInputStream(file);
// 4. 获取套接字的输出流
OutputStream os = socket.getOutputStream();
// 5. 定义字节数组,用来存储文件的数据
byte[] buffer = new byte[1024];
// 6. 定义变量,用来记录读取数据的长度
int length;
// 7. 从文件输入流中读取数据,并将其写入套接字的输出流中
while ((length = fis.read(buffer)) != -1) {
os.write(buffer, 0, length);
}
// 8. 关闭文件输入流
fis.close();
// 9. 关闭套接字的输出流
os.close();
// 10. 关闭套接字
socket.close();
}
}
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class FileServer {
public static void main(String[] args) throws IOException {
// 1. 创建ServerSocket对象,并指定要监听的端口号
ServerSocket serverSocket = new ServerSocket(9999);
// 2. 调用accept()方法,等待客户端连接
Socket socket = serverSocket.accept();
// 3. 创建文件输出流,用于向指定文件中写入数据
FileOutputStream fos = new FileOutputStream("new.txt");
// 4. 获取套接字的输入流
InputStream is = socket.getInputStream();
// 5. 定义字节数组,用来存储读取的数据
byte[] buffer = new byte[1024];
// 6. 定义变量,用来记录读取数据的长度
int length;
// 7. 从套接字的输入流中读取数据,并将其写入指定文件
while ((length = is.read(buffer)) != -1) {
fos.write(buffer, 0, length);
}
// 8. 关闭文件输出流
fos.close();
// 9. 关闭套接字的输入流
is.close();
// 10. 关闭套接字
socket.close();
// 11. 关闭ServerSocket对象
serverSocket.close();
}
}
本文介绍了Java如何通过套接字传输文件。在实现时,我们需要分别实现客户端和服务器端,通过套接字将数据传输到对方。在实现时,需要注意流的打开和关闭顺序,以及要处理可能出现的异常。通过本文的介绍,希望读者可以掌握Java套接字的相关知识并实现套接字文件传输功能。