UDP协议

UDP协议

  1. 用户数据报协议(User Datagram Protocol)

  2. UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。

  3. 由于使用UDP协议消耗系统资源小,通信效率高,所以通常都会用于音频、视频和普通数据的传输

  4. 例如视频会议通常采用UDP协议,因为这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。但是在使用UDP协议传送数据时,由于UDP的面向无连接性,不能保证数据的完整性,因此在传输重要数据时不建议使用UDP协议

  5. 在java中,Java提供了DatagramSocket类作为基于UDP协议的Socket,最要是用于发送或接送数据,有点类似于中间的桥梁承上启下的作用

  6. 在java中,Java还提供了DatagramPacket类,该类的作用是将数据打包发送、接受数据包

方法名说明
void send(DatagramPacket p)发送数据包
void recevie(DatagramPacket p)从数据中心接受数据包
byte[] getData()接受发送的数据包,返回数据缓冲区
int getLength()获取到发送或接受的数据长度
void close()关闭资源
发送端:在这里插入图片描述
发送数据的步骤
  • 创建发送端的Socket对象(DatagramSocket)
  • 创建数据,并把数据打包
  • 调用DatagramSocket对象的方法发送数据
  • 关闭发送端
    public static void main(String[] args) throws IOException {
        //创建数据中心
        DatagramSocket socket = new DatagramSocket (4399);
        //发送数据
        byte[] bytes = "断剑重铸之日,骑士归来之时".getBytes ();
        //接受的用户地址
        InetAddress receiveIp = InetAddress.getByName ("192.168.10.39");
        //接受用户的客户端号,这里的端口号要与接受端的数据中心的端口号一致,否则接受不了
        DatagramPacket packet = new DatagramPacket (bytes,0,bytes.length,receiveIp,6666);
        //发送数据
        socket.send (packet);
        socket.close ();
    }

接受端:在这里插入图片描述

接收数据的步骤
  • 创建接收端的Socket对象(DatagramSocket)
  • 创建一个数据包,用于接收数据
  • 调用DatagramSocket对象的方法接收数据
  • 解析数据包,并把数据在控制台显示
    public static void main(String[] args) throws IOException {
        //创建数据中心和端口号
        DatagramSocket socket = new DatagramSocket (4399);
        //创建一个byte数组接受数据
        byte[] arr = new byte[1024];
        DatagramPacket packet = new DatagramPacket (arr,arr.length);
        //解析数据包
        while (true){
            socket.receive (packet);
            String s = new String (arr, 0, packet.getLength ());
            System.out.println (packet.getAddress()+""+packet.getPort()+""+s);
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值