上一篇
在网络编程中,Java UDP套接字是一种非常重要的通信方式。与TCP不同,UDP(User Datagram Protocol,用户数据报协议)是无连接的、不可靠但高效的传输协议,适用于对实时性要求高、能容忍少量丢包的场景,比如视频通话、在线游戏或DNS查询。
本UDP通信教程将从零开始,手把手教你如何使用Java实现UDP客户端与服务器端的通信。即使你是编程小白,也能轻松上手!
UDP通信不需要建立连接,发送方直接将数据打包成“数据报”(Datagram)发送给接收方。每个数据报都包含目标IP地址和端口号。
在Java中,主要使用以下两个类来实现UDP通信:
DatagramSocket:用于发送和接收数据报的套接字。DatagramPacket:表示一个数据报,包含要发送或接收的数据、目标/来源地址和端口。下面是一个监听端口 9876 的UDP服务器示例:
import java.net.*;import java.io.*;public class UDPServer { public static void main(String[] args) throws Exception { // 创建一个监听在9876端口的DatagramSocket DatagramSocket socket = new DatagramSocket(9876); System.out.println("UDP服务器已启动,等待接收数据..."); while (true) { // 准备一个缓冲区接收数据 byte[] receiveData = new byte[1024]; DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); // 接收数据 socket.receive(receivePacket); // 获取客户端信息 String clientMessage = new String(receivePacket.getData(), 0, receivePacket.getLength()); InetAddress clientAddress = receivePacket.getAddress(); int clientPort = receivePacket.getPort(); System.out.println("收到客户端 [" + clientAddress.getHostAddress() + ":" + clientPort + "] 的消息: " + clientMessage); // 回复客户端 String response = "服务器已收到你的消息: " + clientMessage; byte[] sendData = response.getBytes(); DatagramPacket sendPacket = new DatagramPacket( sendData, sendData.length, clientAddress, clientPort ); socket.send(sendPacket); } }} 客户端向服务器发送一条消息,并接收服务器的回复:
import java.net.*;import java.io.*;public class UDPClient { public static void main(String[] args) throws Exception { // 要发送的消息 String message = "Hello, Java UDP Server!"; byte[] sendData = message.getBytes(); // 目标服务器地址和端口 InetAddress serverAddress = InetAddress.getByName("localhost"); int serverPort = 9876; // 创建DatagramSocket(系统自动分配端口) DatagramSocket socket = new DatagramSocket(); // 构造数据报并发送 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 response = new String(receivePacket.getData(), 0, receivePacket.getLength()); System.out.println("收到服务器回复: " + response); // 关闭套接字 socket.close(); }} UDPServer.java,控制台会显示“UDP服务器已启动...”UDPClient.java,客户端会发送消息并打印服务器回复。DatagramPacket 最大为64KB。socket.close() 释放资源。通过本篇Java网络编程教程,你已经掌握了如何使用Socket编程入门中最基础的UDP通信方式。无论是开发聊天工具、物联网设备通信,还是学习更高级的网络协议,这都是一个坚实的基础。
希望这篇教程对你有帮助!动手实践是掌握Java UDP套接字的最佳方式,快去写代码试试吧!
本文由主机测评网于2025-12-18发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025129420.html