通过UDP传输方式实现发送与接收消息(java语言)
UDP特点
UDP(面向无连接):聊天,刷视频,视频共享 – 将数据及源和目的封装成数据包,不需要建立连接 – 每个数据报的大小限制在64k内 – 因无连接,是不可靠协议(不在会丢包) – 不需要建立连接,速度快
UDP发送端
步骤
1、建立udp socke服务 2、提供数据,并将数据封装到数据包中 3、通过socket服务的发送功能,将数据包发出去 4、关闭资源
代码示例
class UdpSend{ public static void main(String[] args)throws Exception{ //1、DatagramSocket DatagramSocket ds = new DatagramSocket(); //2、DatagramPacket byte[] data = "udp seng".getBytes();//字符串变成字节数组 DatagramPacket dp = new DatagramPacket(data,data.length,InetAddress.getByName("ip地址"),10000); //3、发送send ds.send(dp); //4 ds.close(); } }
UDP接收端
步骤
1、建立udp socke服务,通常会监听一个端口,其实就是给这个接收应用程序定义一个数字标识 2、定义一个数据包,存储接收到的数据 3、receive方法,将接收到的数据存到2的数据包 4、通过数据包对象的特有功能,将不同数据取出,打印在控制台 5、close
代码
class UdpReceive{ public static void main(String[] args)throws Exception{ //1、建立端点 DatagramSocket ds = new DatagramSocket(10000); //2、数据包 while(true){ byte[] buf = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf,buf.length); //3、receive ds.receive(dp); //4 获取dp.getAddress()返回的是一个inetAddress对象,再通过getHostAddress返回字符串 String ip = dp.getAddress().getHostAddress(); String data = new String(dp.getData(),0,dp.getLength()); int port = dp.getPort(); System.out.println("ip:"+ip+" "+"data:"+data+" "+"port:"+port);//ip:169.254.154.84 data:udp seng port:56977 } //这里的port是系统随机给应用程序定义的端口号 //5 ds.close(); } }
效果
接收端: