1、创建发送端
(1)建立DatagramSocket对象。该端点建立,系统会随机分配一个端口。如果不想随机配置,可以手动指定。
(2)将数据进行packet包的封装,必须要指定目的地地址和端口。
(3)通过socket服务的send()方法将该包发出。
(4)将socket关闭。
2、创建接收端
(1)建立DatagramSocket对象。要监听一个端口。
(2)通过socket的receive方法将数据存入数据包中。
(3)通过数据包dp的方法getData()、getAddress()、getPort()等方法获取包中的指定信息。
(4)将socket关闭。
3、举例说明
(1)接收端:
package com.iotek.tcpsocket;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UDPDemo2 {
    public static void main(String[] args) throws IOException {
        DatagramSocket socket = new DatagramSocket(8000);
        byte[] buff = new byte[100];
        DatagramPacket packet = new DatagramPacket(buff, 100);
        socket.receive(packet);//接收传来的数据包
        System.out.println(new String(buff,0,packet.getLength()));
        String string = "Me too!";
        DatagramPacket packet2 = new DatagramPacket(string.getBytes(), string.length(),packet.getAddress(),packet.getPort());
        socket.send(packet2);
        socket.close();
    }
}
(2)发送端:
package com.iotek.tcpsocket;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UDPDemo1 {
    public static void main(String[] args) throws IOException {
        DatagramSocket socket = new DatagramSocket();
        String string = "I Love You!";
        //将数据进行封装,封装到数据包当中
        DatagramPacket packet = new DatagramPacket(string.getBytes(), string.length(),InetAddress.getByName("localhost"),8000);
        socket.send(packet);//发送
        byte[] buff = new byte[100];
        DatagramPacket packet2 = new DatagramPacket(buff, 100);
        socket.receive(packet2);
        System.out.println(new String(buff,0,packet2.getLength()));
        socket.close();
    }
}
(3)为了更直观地理解服务器端和客户端的交互过程,我们将两个文件拷贝到f盘当中。使用下列命令进行编译和执行。
//编译
javac -d . UDP*.java
//开启接收端
java com.iotek.tcpsocket.UDPDemo2
//开启发送端,这里另外开启一个窗口
java com.iotek.tcpsocket.UDPDemo1