在 Java 中,使用 UDP(User Datagram Protocol)发送和接收数据是一种非连接、无状态的网络通信方式。下面将介绍两种基本的实现方式:一种是基于纯 Java 的标准库,另一种是使用第三方库 Apache Commons Net。
创建 UDP 服务器端:
步骤:
DatagramSocket
实例并指定端口号,用于监听传入的数据报。byte
数组作为接收缓冲区。DatagramPacket
实例,用于接收数据。receive()
方法接收数据。import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UDPServer {
public static void main(String[] args) throws Exception {
DatagramSocket serverSocket = new DatagramSocket(9876);
byte[] receiveData = new byte[1024];
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
String receivedMessage = new String(receivePacket.getData(), 0, receivePacket.getLength());
System.out.println("Received message: " + receivedMessage);
serverSocket.close();
}
}
创建 UDP 客户端:
步骤:
DatagramSocket
实例。DatagramPacket
实例,将数据放入数据报中。send()
方法发送数据。import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UDPClient {
public static void main(String[] args) throws Exception {
DatagramSocket clientSocket = new DatagramSocket();
InetAddress serverAddress = InetAddress.getByName("localhost");
byte[] sendData = "Hello, UDP Server!".getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, serverAddress, 9876);
clientSocket.send(sendPacket);
clientSocket.close();
}
}
Apache Commons Net 是一个开源的网络通信库,其中包含了一些方便的工具类来简化 UDP 通信。
添加依赖:
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.8.0</version>
</dependency>
implementation 'commons-net:commons-net:3.8.0'
创建 UDP 服务器端:
步骤:
DatagramSocket
实例并指定端口号,用于监听传入的数据报。byte
数组作为接收缓冲区。receive()
方法接收数据。import org.apache.commons.net.DatagramSocketClient;
public class UDPServer {
public static void main(String[] args) throws Exception {
DatagramSocketClient server = new DatagramSocketClient();
server.open();
byte[] receiveData = new byte[1024];
int bytesRead = server.receive(receiveData);
String receivedMessage = new String(receiveData, 0, bytesRead);
System.out.println("Received message: " + receivedMessage);
server.close();
}
}
创建 UDP 客户端:
步骤:
DatagramSocket
实例。send()
方法发送数据。import org.apache.commons.net.DatagramSocketClient;
public class UDPClient {
public static void main(String[] args) throws Exception {
DatagramSocketClient client = new DatagramSocketClient();
client.open();
byte[] sendData = "Hello, UDP Server!".getBytes();
client.send(sendData, sendData.length);
client.close();
}
}
这两种实现方式都能让你在 Java 中使用 UDP 进行数据的发送和接收。你可以根据项目的需要选择合适的方式。注意,在实际开发中,你需要根据情况处理异常、添加适当的错误处理等。