发送端
import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; import java.net.SocketException; /** * UDP 发送端 * @author Administrator * */ public class Demo2 { public static void main(String[] args) throws Exception { /** * 准备发送端 * DatagramSocket() * 构造一个数据报套接字绑定到本地主机机器上的任何可用的端口。 */ DatagramSocket ds = new DatagramSocket(); /** * 准备数据包 *1、 DatagramPacket(byte[] buf, int length) * 构造一个 DatagramPacket length接收数据包的长度 *2、 String的getBytes() * 方法是得到一个操作系统默认的编码格式的字节数组 *3、 setSocketAddress() * 设置SocketAddress(通常是IP地址+端口号)都的远程主机发送数据报。 * 4、InetSocketAddress(InetAddress addr, int port) * 创建一个套接字地址的IP地址和端口号。 */ String str = "你好,UDP"; byte[] ch = str.getBytes(); DatagramPacket dp = new DatagramPacket(ch, ch.length); dp.setSocketAddress(new InetSocketAddress("127.0.0.1", 12345)); // 发送数据 ds.send(dp); // 关闭套接字 ds.close(); } }
接收端
import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; /** * UDP 接收端 * @author Administrator * */ public class Demo3 { public static void main(String[] args) throws Exception { // 创建接收端 DatagramSocket ds = new DatagramSocket(12345); /** * 接收数据包 * receive(DatagramPacket p) * 从这个套接字接收数据报包。 */ byte[] data = new byte[1024]; DatagramPacket dp = new DatagramPacket(data, data.length); ds.receive(dp); // 获取接受到的信息 String str = new String(data, 0, dp.getLength()); System.out.println(str); // 关闭接收端 ds.close(); } }