java中UDP如何发送数据

使用DatagramSocket和DatagramPacket可实现Java中UDP数据发送,1. 创建DatagramSocket对象以绑定本地端口;2. 将数据转换为字节数组并封装成DatagramPacket,指定目标IP和端口;3. 调用send()方法发送数据包;4. 发送完成后关闭socket释放资源,需确保接收方在对应地址端口监听且防火墙允许通信,适用于实时性要求高、可容忍丢包的场景。

在Java中使用UDP发送数据,主要依赖于DatagramSocketDatagramPacket两个类。UDP是无连接的协议,因此不需要建立连接,直接将数据打包发送到指定地址和端口即可。

1. 创建DatagramSocket

DatagramSocket用于发送和接收UDP数据包。发送方可以指定本地端口,也可以由系统自动分配。

DatagramSocket socket = new DatagramSocket(); // 系统自动绑定端口

2. 准备要发送的数据

数据需要转换为字节数组,并封装成DatagramPacket。同时要指定目标主机的IP地址和端口号。

String message = "Hello, UDP!";
byte[] buffer = message.getBytes();
InetAddress address = InetAddress.getByName("127.0.0.1"); // 目标IP
int port = 9876; // 目标端口
DatagramPacket packet = new DatagramPacket(buffer, buffer.length, address, port);

3. 发送数据

通过DatagramSocketsend()方法发送数据包。

socket.send(packet);

4. 关闭Socket

发送完成后,应关闭socket以释放资源。

socket.close();

完整的简单示例:

import java.net.*;

public class UDPSender {
    public static void main(String[] args) throws Exception {
        DatagramSocket socket = new DatagramSocket();
        String msg = "Hello from UDP sender";
        byte[] buf = msg.getBytes();
        InetAddress destAddr = InetAddress.getByName("127.0.0.1");
        int destPort = 9876;
        DatagramPacket packet = new DatagramPacket(buf, buf.length, destAddr, destPort);
        socket.send(packet);
        socket.close();
        System.out.println

("数据已发送"); } }

基本上就这些。注意确保接收方在同一IP和端口监听,且防火墙允许该端口通信。UDP不保证送达,适合对实时性要求高、能容忍少量丢失的场景。