一般网络编程协议都是使用http,但是在一些特殊需求的功能则需要UDP网络编程,比如需要通过与后台进行长连接,实时发送接收消息等则需要UDP来实现更轻松。
DatagramSocket 和 DatagramPacket 两个类是 基于UDP 协议进行通信的包装类
实现两个客户端通过 UDP协议通信,使用DatagramSocket 和 DatagramPacket类
有如下几个步骤,分为客户端和服务端
1,客户端:
1),实例化DatagramSocket类(带上指定端口),创建客户端
2),准备数据,数据是以字节数组发送的
3),打包数据,使用 DatagramPacket 类 + 服务器地址+ 端口
4),发送数据
5),关闭连接
public static void sendMessage(String content) throws IOException { // 1,创建服务端+端口 DatagramSocket client = new DatagramSocket(9901); // 2,准备数据 String msg = content; byte[] data = msg.getBytes(); // 3,打包(发送的地点及端口) DatagramPacket packet = new DatagramPacket(data, data.length, new InetSocketAddress("127.0.0.1", 1219)); // 4,发送资源 client.send(packet); // 5,关闭资源 client.close(); }
2,服务端
1),实例化DatagramSocket类+指定端口
2),准备接收的字节数组,封装 DatagramPacket
3),接受数据
4),解析数据
5),关闭连接
public static void getMessage() throws IOException { // 1,创建服务端+端口 DatagramSocket server = new DatagramSocket(9901); // 2,准备接收容器 byte[] container = new byte[1024]; // 3,封装成包 new DatagramPacket(byte[] b,int length) DatagramPacket packet = new DatagramPacket(container, container.length); // 4,接收数据,使用 DatagramSocket的实例的 receive( DatagramPacket ) 方法进行接收 server.receive(packet); // 5,分析数据 byte[] data = packet.getData(); int length = packet.getLength(); String msg = new String(data, 0, length); System.out.println(msg); server.close(); }