下面是一个Java中UDP简单聊天程序的基本实例。这个示例包括一个服务器端和一个客户端。服务器端接收来自客户端的消息,并打印到控制台。客户端发送消息到服务器端。
### UDP服务器端代码
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class UDPServer {
public static void main(String[] args) {
DatagramSocket socket = null;
try {
socket = new DatagramSocket(9876); // 创建DatagramSocket,并绑定到9876端口
byte[] receiveData = new byte[1024];
while (true) {
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
socket.receive(receivePacket); // 接收数据
String sentence = new String(receivePacket.getData(), 0, receivePacket.getLength());
System.out.println("RECEIVED: " + sentence);
// 这里可以添加向客户端发送响应的代码
}
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (socket != null) {
socket.close();
}
}
}
}
### UDP客户端代码
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UDPClient {
public static void main(String[] args) {
DatagramSocket clientSocket = null;
try {
clientSocket = new DatagramSocket();
InetAddress IPAddress = InetAddress.getByName("localhost");
byte[] sendData = new byte[1024];
String sentence = "Hello from UDP client";
sendData = sentence.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876);
clientSocket.send(sendPacket); // 发送数据
// 这里可以添加接收服务器响应的代码
} catch (IOException e) {
e.printStackTrace();
} finally {
if (clientSocket != null) {
clientSocket.close();
}
}
}
}
**注意**:
- 服务器端和客户端都需要处理异常,并确保资源(如`DatagramSocket`)在使用后被正确关闭。
- 客户端通过指定服务器的IP地址和端口号来发送数据。在这个例子中,我们使用`localhost`作为服务器地址,端口号为`9876`。
- 服务器端在无限循环中接收数据,这意味着它将持续监听端口,直到程序被外部方式(如用户中断)停止。
- 客户端发送一条固定消息后结束,但在实际应用中,它可能需要根据用户输入或其他逻辑来发送消息。
- 这两个示例仅包含基本功能,没有添加错误处理、数据验证或用户交互等高级特性。