//发送端代码
//应用层的业务逻辑代码(产生数据) String data = "hello ,upd"; //1.利用传输层的功能,传输,应用层数据 DatagramSocket datagram Socket = new DatagramSocket(10086); //2.将要发送的数据封装橙数据包 //将要发送的数组,转化为字节数组 byte[] byteData = data.getBytes(); //创建表示接收端Socket对象的地址的ip InetAddress ip = InetAddress.getName("192.168.56.1"); DatagramPacket packet = new DatagramPacket(byteData,0,byteData.length,ip,9998); //3.通过udp的socket对象,将数据包发送出 datagramSocket.send(packet); //4.释放资源 datagramSocket.close();
接收端代码//UDP传输接收端//1.建立UDP的socket对象
DatagramSocket receivergramSocket new DatagramSocket(9998); //2.创建用于接收数据的数据报包,通过socket对象的receive方法接收数据 //创建接收数据的数据报包 byte[] byteBuffer = new byte[1024]; int offset = 2; DatagramPacket receiverPacket = new DatagramPacket(byteBuffer, offset, byteBuffer.length - offset); //接收数据,该方法执行完,接收数据的数据报包中,就被填充了接收的到数据 receiverSocket.receive(receiverPacket); //3.通过数据包对象的功能来万恒对接收到的数据进行解析 //从接收数据的数据报包中,获取接收数据的缓冲(byte[]) byte[] data = receiverPacket.getData(); //指明接收的数据,是从缓冲区中的哪个位置开始 int offset =receiverPacket.getOffset(); //本次实际接收到的字节数 int lenght = receiverPacket.getLength(); //---------------------------------------------------------------- //接收端根据接收端的业务逻辑,解析接收到的数据 String s = new String(data, offset, length);
//接收到了来自192.168.56.1--10086数据:help, udp
//receiverPacket.getAddress()发送端的端口号
//receiverPacket.getPort() 发送端的端口号
System.out.print("接收到了来自" + receiverPacket.getAddress() + "--" + receiverPacket.getPort() + "数据:" + s);
接收端先执行