• Java --- UDP 通信 DatagramSocket DatagramPacket 使用 完整步骤


        UDP (英语:User Datagram Protocol,用户数据报协议),位于 OSI 模型的传输层。一个无连接的协议。提供了应用程序之间要发送数据的数据报。由于UDP缺乏可靠性且属于无连接协议,所以应用程序通常必须容许一些丢失、错误或重复的数据包。
        区别于TCP传输的可靠性,UDP编程在创建时,不指定数据接收方的ip 和端口,而是把这些连接信息放在了数据报中,其他数据处理,和TCP类似。诸位可以参考小编之前的两篇关于 TCP 通信传输的文章:Java — ServerSocket 和 Socket 简单通信 完整步骤Java — ServerSocket 和 Socket 多线程通信 完整步骤
     下面,小编演示一下UDP通信的完整步骤,Let go!

    public class UdpTest {
    
        //发送端
        @Test
        public void sender() throws IOException {
            //1,创建upd数据报socket,报文接收端的Ip和端口,在数据包中定义,socket不关心
            //这点区别于TCP传输方式
            DatagramSocket socket = new DatagramSocket();
            //2,创建数据包,数据内容,Ip 端口
            //这里使用 127.0.0.1
            InetAddress inetAddress = InetAddress.getLocalHost();
            String str = "你好,我是发送端";
            //转换为字节发送
            byte[] bytes = str.getBytes();
            DatagramPacket packet = new DatagramPacket(bytes,0,bytes.length,inetAddress,8081);
            //3,启动upd发送
            socket.send(packet);
            //4,关闭socket资源
            socket.close();
        }
    
        //接收端
        @Test
        public void receiver() throws IOException {
            //1,创建Udp接收socket
            DatagramSocket socket = new DatagramSocket(8081);
            //2,创建接收字节数据区
            byte[] bytes = new byte[1024];
            //3,创建用于接收数据package包
            DatagramPacket packet = new DatagramPacket(bytes,0,bytes.length);
            //4,接收数据,写入packet里面
            socket.receive(packet);
    
            //5,打印传输的文件
            System.out.println("接收端:" + new String(packet.getData(),0,packet.getLength()));
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    先启动 revicer(),等待接收数据。如果先启动 sender(),udp 机制会使得发送端启动运行后就会关闭,并不关心传输的数据是否到达接收端。
    输出:

    D:\jdk\jdk1.8.0_171\bin\java.exe
    接收端:你好,我是发送端
    
    • 1
    • 2
  • 相关阅读:
    spring:实现初始化动态bean|获取对象型数组配置文件
    【云原生】使用Dockerfile制作openGauss镜像
    java.lang.Float类下toString(float f)方法具有什么功能呢?
    git的详细使用
    vue中 axios get请求,使用formData传递参数给后台
    【英语语法】so
    【Python】Numpy排序函数详解
    [4G/5G/6G专题基础-160]: 5G双链接与MCG/SCG/PCell/PSCell/SCell
    3.快速上手
    Window下Mysql8.0 怎样恢复被删除的Root
  • 原文地址:https://blog.csdn.net/yuanchenglong/article/details/125571624