您的位置:

Java UDP编程介绍

Java UDP编程介绍

更新:
UDP(用户数据报告协议)是一种简单的数据报告传输层协议。它不提供任何形式的服务,如数据到达确认、排序或删除重复数据。Java提供UDP支持,这样就可以通过Java编程UDP。

一、Java UDP编程简介

在Java中,DatagramSocket和DatagramPacket提供了UDP协议的实现。DatagramSocket是数据报告通信的一端,而DatagramPacket是用于接收或发送的数据报告包。
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

//发送端
public class UDPSender {
    public static void main(String[] args) throws Exception {
        DatagramSocket ds = new DatagramSocket();
        String str = "Hello, World!";
        DatagramPacket dp = new DatagramPacket(str.getBytes(), str.length(), InetAddress.getByName("127.0.0.1"), 9999);
        ds.send(dp);
        ds.close();
    }
}

二、Java UDP发送和接收数据

在Java的UDP编程中,用于发送和接收数据的方法相对直接。以发送数据为例,首先获取一个DatagramSocket示例,然后创建消息数据,将其包装到DatagramPacket对象中,然后调用数据套接字的send方法将其发送出去。
//接收端
public class UDPReceiver {
    public static void main(String[] args) throws Exception {
        DatagramSocket ds = new DatagramSocket(9999);
        byte[] buf = new byte[1024];
        DatagramPacket dp = new DatagramPacket(buf, buf.length);
        ds.receive(dp);
        String str = new String(dp.getData(), 0, dp.getLength());
        System.out.println(str);
        ds.close();
    }
}

三、Java UDP超时设置和异常处理

在网络编程中,超时设置和异常处理是不可或缺的一部分。可以通过设置数据套接字的setsotimeout方法来设置加班时间,单位为毫秒,如果超过这个时间接收方法还没有收到任何数据,那么sockettimeoutexception就会被抛出。

public class UDPReceiverWithTimeout {
    public static void main(String[] args) {
        byte[] buf = new byte[1024];
        DatagramPacket dp = new DatagramPacket(buf, buf.length);
        try {
            DatagramSocket ds = new DatagramSocket(9999);
            ds.setSoTimeout(5000);  //设置超时为5秒
            ds.receive(dp);
            String str = new String(dp.getData(), 0, dp.getLength());
            System.out.println(str);
            ds.close();
        } catch (SocketTimeoutException e) {
            System.out.println("接收超时,数据接收失败");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}