發送端
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(); } }