📅  最后修改于: 2023-12-03 15:38:10.307000             🧑  作者: Mango
在本文中,我们将介绍如何使用 Java 编写 UDP 协议的程序,以传输大量文件。UDP 协议是一种无连接的协议,它可以在高速率下进行快速的数据传输。在本教程中,我们将使用 Java 中的 DatagramPacket 和 DatagramSocket 以及 File 和 FileOutputStream 类。
在发送方的 Java 程序中,我们将首先获取要传输的文件名和 IP 地址。接下来,我们将创建 DatagramPacket 对象,该对象将包含文件的数据和 IP 地址以及端口号。然后,我们将通过 DatagramSocket 传输数据包到接收方。
import java.net.*;
import java.io.*;
public class Sender {
public static void main(String[] args) throws IOException {
// 获取要传输的文件
String filename = "example.txt";
// 定义接收方的 IP 地址和端口号
InetAddress ip = InetAddress.getByName("192.168.1.1");
int port = 4444;
// 创建文件输入流
FileInputStream fileInput = new FileInputStream(filename);
// 创建 UDP 数据包
byte[] data = new byte[1024];
DatagramPacket packet = new DatagramPacket(data, data.length, ip, port);
// 创建 UDP 套接字
DatagramSocket socket = new DatagramSocket();
// 传输文件数据
int bytesRead = 0;
while ((bytesRead = fileInput.read(data, 0, data.length)) != -1) {
packet.setData(data);
socket.send(packet);
}
// 关闭文件输入流和套接字
fileInput.close();
socket.close();
}
}
在接收方的 Java 程序中,我们将创建 DatagramSocket 对象,以等待来自发送方的数据包。一旦收到数据包,我们将从中提取文件名和数据,然后将数据写入文件中。
import java.net.*;
import java.io.*;
public class Receiver {
public static void main(String[] args) throws IOException {
// 定义接收方的端口号
int port = 4444;
// 创建 UDP 套接字
DatagramSocket socket = new DatagramSocket(port);
// 创建接收数据包
byte[] data = new byte[1024];
DatagramPacket packet = new DatagramPacket(data, data.length);
// 接收文件数据
FileOutputStream fileOutput = null;
while (true) {
socket.receive(packet);
byte[] fileData = packet.getData();
String filename = "example.txt";
if (fileOutput == null) {
fileOutput = new FileOutputStream(filename);
}
fileOutput.write(fileData, 0, fileData.length);
if (packet.getLength() < data.length) {
fileOutput.close();
break;
}
}
// 关闭套接字
socket.close();
}
}
现在,我们已经创建了发送方和接收方的 Java 程序。我们可以在两个不同的命令行窗口中分别启动这两个程序。接收方程序首先启动,并等待来自发送方的数据包。
java Receiver
然后,在发送方窗口中启动发送方程序。
java Sender
现在,发送方程序将传输数据包到接收方程序。接收方程序将从中提取文件并将其保存在本地文件系统中。
在本文中,我们介绍了如何使用 Java 编写 UDP 协议的程序,以传输大量文件。我们使用了 Java 中的 DatagramPacket 和 DatagramSocket 以及 File 和 FileOutputStream 类。我们学习了如何创建发送方和接收方程序,并分别启动它们以进行文件传输。