zoukankan      html  css  js  c++  java
  • UDP协议

    udp:

    UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。 
    UDP协议全称是用户数据报协议[1] ,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。 
    与所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层。根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议。UDP协议的主要作用是将网络数据流量压缩成数据包的形式。一个典型的数据包就是一个二进制数据的传输单位。每一个数据包的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。

    后期我们还会讲到TCP,都是可以传输数据的,但是各有各的特点。

    好,那我们先来实现UDP接收端:

    public class Save {
    
        public static void main(String[] args) throws Exception {
            // 定义一个接收端,并且指定了接收的端口号
            DatagramSocket socket = new DatagramSocket(8080);
    
            while (true) {
                byte[] buf = new byte[1024];
                // 解析数据包
                DatagramPacket packet = new DatagramPacket(buf, buf.length);
    
                socket.receive(packet);
    
                String ip = packet.getAddress().getHostAddress();
    
                buf = packet.getData();
    
                String data = new String(buf, 0, packet.getLength());
    
                System.out.println("收到 " + ip + " 发来的消息:" + data);
    
            }
    
        }
    }

    其实不是很难,代码就几行,并且把数据打印出来了。

    然后看看发送端:

    public class Send {
    
        public static void main(String[] args) throws Exception {
            DatagramSocket socket = new DatagramSocket();
            byte[] buf = "ge men lai le".getBytes();
            //将数据打包
            DatagramPacket packet = new DatagramPacket(buf, buf.length, InetAddress.getByName("192.168.111.206"), 8080);
            socket.send(packet);
            socket.close();
    
        }
    
    }

    192.168.111.206是自己的本地ip,获取方式:新建一个java类,然后在主方法里面进行获取,具体代码是:

    public class Mexception {
        public static void main(String[] args) throws UnknownHostException {
            System.out.println(InetAddress.getLocalHost().toString());
        }
    }
  • 相关阅读:
    jenkins集群(三) -- master和slave配置git
    jenkins集群(二)(master --> slave) -- allure自动化测试报告部署
    jenkins集群(一) -- 在Linux上部署
    APP自动化 -- contexts(上下文切换)
    APP自动化 -- 滑动解锁、滑动验证
    APP自动化 -- 坐标获取和点击
    APP自动化 -- 获取toast元素的文本内容
    APP自动化 -- MobileBy
    Python学习-基础数据类型补充操作、bytes类型
    Kafka-生产者、消费者、自定义分区器
  • 原文地址:https://www.cnblogs.com/jason111/p/9000877.html
Copyright © 2011-2022 走看看