在 Java 网络编程中,DatagramSocket 是实现 UDP(User Datagram Protocol) 通信的核心类。与 TCP 不同,UDP 是一种无连接的协议,具有传输速度快、开销小的特点,常用于实时音视频、在线游戏或 DNS 查询等场景。
本教程将带你从零开始,手把手教你如何使用 DatagramSocket 实现简单的 UDP 客户端与服务器通信。无论你是编程小白还是刚接触网络编程,都能轻松上手!

DatagramSocket 是 Java 提供的一个用于发送和接收 UDP 数据包的类。它不建立连接,而是通过“数据报”(DatagramPacket)来传递信息。每个数据报都包含目标地址和端口,因此可以“点对点”发送,但不保证顺序或可靠性。
在本教程中,我们将聚焦于 Java DatagramSocket 的基本用法。
服务器的作用是监听某个端口,接收客户端发来的消息,并可选择回复。
import java.net.*;import java.io.IOException;public class UDPServer { public static void main(String[] args) { try { // 创建一个 DatagramSocket,监听 9876 端口 DatagramSocket socket = new DatagramSocket(9876); System.out.println("UDP 服务器已启动,等待接收数据..."); // 准备一个缓冲区接收数据 byte[] receiveData = new byte[1024]; DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); // 阻塞等待接收数据 socket.receive(receivePacket); // 获取接收到的数据 String message = new String(receivePacket.getData(), 0, receivePacket.getLength()); System.out.println("收到客户端消息: " + message); // 获取客户端地址和端口,用于回复 InetAddress clientAddress = receivePacket.getAddress(); int clientPort = receivePacket.getPort(); // 构造回复消息 String reply = "Hello from server!"; byte[] sendData = reply.getBytes(); DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, clientAddress, clientPort); // 发送回复 socket.send(sendPacket); System.out.println("已向客户端回复消息。"); // 关闭 socket socket.close(); } catch (IOException e) { e.printStackTrace(); } }}客户端主动向服务器发送消息,并等待服务器的回复。
import java.net.*;import java.io.IOException;public class UDPClient { public static void main(String[] args) { try { // 创建 DatagramSocket(系统自动分配端口) DatagramSocket socket = new DatagramSocket(); // 要发送的消息 String message = "Hello UDP Server!"; byte[] sendData = message.getBytes(); // 指定服务器地址和端口 InetAddress serverAddress = InetAddress.getByName("localhost"); int serverPort = 9876; // 构造数据包 DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, serverAddress, serverPort); // 发送数据 socket.send(sendPacket); System.out.println("已向服务器发送消息: " + message); // 准备接收回复 byte[] receiveData = new byte[1024]; DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); // 接收服务器回复 socket.receive(receivePacket); String reply = new String(receivePacket.getData(), 0, receivePacket.getLength()); System.out.println("收到服务器回复: " + reply); // 关闭 socket socket.close(); } catch (IOException e) { e.printStackTrace(); } }}UDPServer.java,它会阻塞等待消息。UDPClient.java,客户端会发送消息并接收回复。DatagramPacket 最大为 65507 字节(受 IP 协议限制)。通过本教程,你已经掌握了如何使用 Java DatagramSocket 实现基本的 UDP 通信。这是 Java网络编程 中的重要一环,也是理解更复杂网络应用的基础。
无论是开发实时聊天工具、多人游戏,还是物联网设备通信,UDP通信教程 中的知识都能派上用场。建议你动手敲一遍代码,加深理解!
如果你觉得这篇 DatagramSocket示例 教程对你有帮助,欢迎分享给更多初学者!
本文由主机测评网于2025-12-17发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025128937.html