java的UPD编程
本文主要讲述java的UPD编程知识。
UPD数据传输的图解:
接收方:
public class UDPReceiver01 { public static void main(String[] args) throws IOException { /** * 接收数据 */ // 1.创建一个DatagramSocket对象,指定端口号 DatagramSocket socket = new DatagramSocket(9999); // 2.创建DatagramPacket对象,准备接受数据 // 2.1创建读取的字节数组 // 2.2根据字节数组来创建DatagramPacket数据包packet1,用于接收发送方发送过来的数据包 byte[] bytes = new byte[1024]; DatagramPacket packet1 = new DatagramPacket(bytes, bytes.length); // 3.由socket对象,调用receive(),接收发送方发送的数据包,并将其存放在packet1中。 socket.receive(packet1); // 4.将packet1拆包,获得内容和长度 int length = packet1.getLength(); byte[] data = packet1.getData(); String s = new String(data,0,length); System.out.println(s); /** * 发送数据 */ // 1.将发送的内容转换成字节数组 byte[] bytes1 = "好的 明天见".getBytes(); // 2.创建数据包,指定字节数组和ip地址以及端口号 DatagramPacket packet2 = new DatagramPacket(bytes1, 0, bytes1.length, InetAddress.getByName("169.254.147.16"), 9998); // 3.发送数据包 socket.send(packet2); socket.close(); } }
发送方:
public class UDPSender01 { public static void main(String[] args) throws IOException { /** * 发送数据 */ // 1.创建DatagramSocket对象,指明端口号 DatagramSocket socket = new DatagramSocket(9998); // 2.将发送内容转变成字节数组 byte[] bytes = "hello 明天吃火锅".getBytes(); // 3.创建数据包对象,指定字节数组,ip地址和端口号 DatagramPacket packet1 = new DatagramPacket(bytes, bytes.length, InetAddress.getByName("169.254.147.16"), 9999); // 4.发送数据包 socket.send(packet1); /** * 读取数据 */ // 1.创建读取所需要的字节数组 byte[] bytes1 = new byte[1024]; // 2.根据字节数组,创建数据包packet2 DatagramPacket packet2 = new DatagramPacket(bytes1, bytes1.length); // 3.等待发送方发送数据包,用packet2接收 socket.receive(packet2); // 4.将接收到的数据包packet2拆包,获得字节数组和长度 byte[] data = packet2.getData(); int length = packet2.getLength(); String s = new String(data, 0, length); System.out.println(s); socket.close(); } }