发送端:
package demo02; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.UnknownHostException; /* * 实现UDP协议的发送端: * 实现封装数据的类 java.net.DatagramPacket 将你的数据包装 * 实现数据传输类 java.net.DatagramSocket 将数据包发出去 * * 实现步骤: * 1.创建DatagramPacket对象,封装数据,接收的地址和端口 * 2.创建DatagramSocket对象, * 3.调用DatagramSocket类的方法send,发送数据包 * 4.关闭资源 * * DatagramPacket构造方法: * DatagramPacket(byte[] buf,int length,InetAddress address,int port) * * DatagramSocket构造方法: * DatagramSocket()空参数 * 方法:send(DatagramPacket d) * * */ public class UDPSend { public static void main(String[] args) throws IOException { //创建数据包对象,封装要发送的数据,接受端IP,端口 byte[] data="你好UDP".getBytes(); //创建InetAddress对象,封装自己的IP地址 InetAddress inet=InetAddress.getByName("127.0.0.1"); DatagramPacket dp=new DatagramPacket(data,data.length,inet,6000); //创建DatagramSocket对象,数据包的发送和接受对象 DatagramSocket ds=new DatagramSocket(); //调用ds对象的方法send,发送数据包 ds.send(dp); ds.close(); } }
接收端
package demo01; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; /* * 实现UDP接收端 * 实现封装数据包java.net.DatagramPacket 将数据接收 * 实现输出传输 java.net.DatagramSocket 接受数据包 * * 实现步骤: * 1.创建DatagramSocket对象,绑定端口号 * 要和发送数据端口号一致 * 2.创建字节数组,接受发来的数组 * 3.创建数据包对象DatagramPacket * 4.调用DatagramSocket对象方法 receive(DatagramPacket dp) * 接受数据,数据放在数据包中 * 5.拆包 * 发送的IP地址 * 数据包对象DatagramPacket()方法getAddress()获取的是发送端的IP地址对象 * 接受到的字节个数 * 数据包对象DatagramPacket()方法getLength() * 发送方的端口号 * 数据包对象DatagramPacket()方法getPort() * 6.关闭资源 */ public class UDPReceive { public static void main(String[] args) throws IOException { //创建数据包传输对象DatagramSocket 绑定端口号 DatagramSocket ds=new DatagramSocket(6000); //创建字节数组 byte[] data=new byte[1024]; //创建数据包对象,传递字节数组 DatagramPacket dp=new DatagramPacket(data, data.length); //调用ds对象的方法receive传递数据包 ds.receive(dp); //获取发送端的IP地址对象 String ip=dp.getAddress().getHostAddress(); //获取发送的端口号 int port=dp.getPort(); //获取接收到的字节数 int length=dp.getLength(); System.out.println(new String(data,0,length)+"...."+ip+":"+port); ds.close(); } }