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