UDP协议详解

UDP 简称 User Datagram Protocol (用户数据报协议),是一种无连接、不可靠的协议,每个数据报都是一个独立的信息,每个被传输的数据报很小(限定在 64k 以下),位于传输层 ( ip 位于网络层 ) 。而且 UDP 协议是不分客户端和服务端,只分发送端和接收端。因为 UDP 协议是面向无连接的,所以速度很快,但会出现数据包丢失。一般用于视频聊天、网络游戏等实时性较高的情况。

简单的 UDP 程序

发送者

public class UdpSender {

    public static void main(String[] args) throws IOException {
        //首先创建一个DatagramSocket对象
        DatagramSocket socket = new DatagramSocket();
        //创建一个InetAddree
        InetAddress serverAddress = InetAddress.getByName("127.0.0.1");
        String str = "Hello World!";  //这是要传输的数据
        byte data[] = str.getBytes();  //把传输内容分解成字节
        //创建一个DatagramPacket对象,并指定要讲这个数据包发送到网络当中的哪个、地址,以及端口号
        DatagramPacket packet = new DatagramPacket(data, data.length, serverAddress, 4567);
        //调用socket对象的send方法,发送数据
        socket.send(packet);
    }
}

接收者

public class UdpReceiver {

    public static void main(String[] args) throws IOException {
        //创建一个DatagramSocket对象,并指定监听的端口号
        DatagramSocket socket = new DatagramSocket(4567);
        while (true) {

            //如果发送过来的数据大于1024字节,那么将接收不完整
            byte data[] = new byte[1024];
            //创建一个空的DatagramPacket对象
            DatagramPacket packet = new DatagramPacket(data, data.length);
            //使用receive方法接收客户端所发送的数据,
            //如果客户端没有发送数据,该进程就停滞在这里
            socket.receive(packet);
            String result = new String(packet.getData(), packet.getOffset(), packet.getLength());
            System.out.println(packet.getAddress().getHostName() + " result---> " + result);
        }
    }
}

丢包的原因

  1. 带宽不足

  2. cpu 处理不过来

传输层和网络层有什么不同

网络层: 提供点到点的连接,即提供主机之间的逻辑通信。 传输层: 提供端到端的连接,即进程之间的逻辑通信。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 14,483评论 6 174
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,923评论 6 13
  • 11.1 引言 UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一...
    张芳涛阅读 7,921评论 1 6
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 10,491评论 0 8
  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者...
    保川阅读 11,178评论 1 13

友情链接更多精彩内容