UDP:不是面向连接的协议,它是以数据为中兴的协议,它的特点:数据的可靠性较差,数据容易丢失,但是它的效率高
一、类DatagramSocket DatagramPacket
客户端
1、创建客户端使用 DatagramSocket 类 + 端口 (指定:我的数据从那个端口出去).
2、准备数据 只不过这些数据需要装配到字节数组中去.
3、将数据打包使用 DatagramPacket + 服务器地址及端口号 来完成打包.
4、发送.
5、释放资源.
服务器端
1、创建服务器端使用 DatagramSocket 类 + 端口 (指定:我从那个端口获得数据).
2、准备接收数据 同样需要定义一个字节数组 封装 DataGramPacket .
3、接收数据.
4、分析数据.
5、释放资源.
例:模拟
public static void main(String[] args) {
//创建客户端使用 DatagramSocket 类 + 端口 (指定:我的数据从那个端口出去)
DatagramSocket client = null;
DatagramPacket packet = null;
// 准备数组.
byte[] data = null;
try {
client = new DatagramSocket(8888);
//准备数据 只不过这些数据需要装配到字节数组中去.
String msg = "XXXXXXXXXXX";
data = msg.getBytes();
//将数据打包使用 DatagramPacket + 服务器地址及端口号 来完成打包.
packet = new DatagramPacket(data, data.length,new InetSocketAddress("127.0.0.1",8888));
//发送
client.send(packet);
//释放资源.
client.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建服务器端使用 DatagramSocket 类 + 端口 (指定:我从那个端口获得数据).
DatagramSocket server = null;
DatagramPacket packet = null;
try {
server = new DatagramSocket(8888);
//准备接收数据 同样需要定义一个字节数组 封装 DataGramPacket .
byte[] data = new byte[1024];
packet = new DatagramPacket(data, data.length);
//接收数据.
server.receive(packet);//阻塞方法
//分析数据.
byte[] data01 = packet.getData(); // 获得客户端传输的真实数据
System.out.println(new String(data));
//释放资源.
server.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}