udp包最大数据长度是多少

2023-11-08

原文地址:https://blog.csdn.net/caoshangpa/article/details/51530685

每个udp包的最大大小是多少?
    65507 约等于 64K

为什么最大是65507?
    因为udp包头有2个byte用于记录包体长度. 2个byte可表示最大值为: 2^16-1=64K-1=65535
    udp包头占8字节, ip包头占20字节, 65535-28 = 65507

如果要发送的udp报文大于65507怎么办?
    需要在应用层由开发者自己分片发送. 分片的粒度最大65507字节. 系统的sendto函数是不支持大于65507字节的单包发送的.


UDP包头格式:

 

用php测试结果如下, 当大小为65508时报错.

....
socket_sendto return : 65506
will send data len : 65507 ...
socket_sendto return : 65507
will send data len : 65508 ... //=================< 这里报错

PHP Warning:  socket_sendto(): unable to write to socket [90]: Message too long in /data/home/nemo/code/test/server_test/udp_client.php on line 25


测试代码:

    <?php
    $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
     
    $svr_ip = "10.130.2.105";
    $svr_port = 9999;
     
    // 构造一个70KB长度的字符串
    $msg1 = "0123456789";
    $msg2 = '';
    for ($i=0; $i<1024*7; $i++)
    {
        $msg2 .= $msg1;
    }
     
    // 从63KB开始尝试发, 看是否发送失败
    $send_len = 63*1024;
    while (1)
    {
        $msg = substr($msg2, 0, $send_len);
        $len = strlen($msg);
     
        print_r("will send data len : $len ...\n");
     
        $ret = socket_sendto($sock, $msg, $len, 0, $svr_ip, $svr_port);
        if ($ret == false)
        {
            print_r("$len failed.");
            exit;
        }
        $send_len ++;
     
        //print_r($msg);
     
        print_r("socket_sendto return : $ret\n");
     
    }
     
    socket_close($sock);

 


---------------------
作者:zdl1016
来源:CSDN
原文:https://blog.csdn.net/zdl1016/article/details/8673377
版权声明:本文为博主原创文章,转载请附上博文链接!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

udp包最大数据长度是多少 的相关文章

  • 我们如何在使用循环时调用 ansible playbook 中的变量

    我有两个文件 其中这些文件包含server names and server IP s 我想更改 替换一些特定的server names and IP addressees根据要求在两个文件中 这与这篇文章 因为它被要求开设一个新职位 ht
  • 对于任何真实数据集,数据压缩比的最小可能值是多少

    我在写信ZLIB类似于嵌入式硬件压缩器的 API 它使用 deflate 算法来压缩给定的输入流 在进一步讨论之前 我想解释一下数据压缩率 数据压缩率定义为未压缩大小与压缩大小之间的比率 压缩比通常大于一 这意味着压缩数据通常比未压缩数据小
  • 如何获取与 shell 中的文件名模式匹配的所有文件的总文件大小?

    我正在尝试仅使用 shell 来计算与文件名模式匹配的所有文件 在目录树中 的总大小 以字节为单位 这是我到目前为止所拥有的 find name undo exec stat c s awk 总计 1 END 打印总计 有没有更简单的方法来
  • 在 scapy 中通过物理环回发送数据包

    我最近发现了 Scapy 它看起来很棒 我正在尝试查看 NIC 上物理环回模块 存根上的简单流量 但是 Scapy sniff 没有给出任何结果 我正在做的发送数据包是 payload data 10 snf sniff filter ic
  • bash 将输出重定向到文件,但结果不完整

    重定向命令输出的问题已经被问过很多次了 但是我有一个奇怪的行为 我使用的是 bash shell debian 版本 4 3 30 1 release 并尝试将输出重定向到文件 但并非所有内容都记录在文件中 我尝试运行的 bin 文件是 l
  • 链接错误:命令行中缺少 DSO

    我对 Linux 使用 Ubuntu 14 04 LTS 64 位 相当陌生 来自 Windows 并且正在尝试移植我现有的 CUDA 项目 当通过链接时 usr local cuda bin nvcc arch compute 30 co
  • 使用 libusb 输出不正确

    我用libusb编写了一个程序 我怀疑输出是否正确 因为所有条目都显示相同的供应商和产品 ID 以下是代码 include
  • 正则表达式删除块注释也删除 * 选择器

    我正在尝试使用 bash 从 css 文件中删除所有块注释 我有以下 sed 命令的正则表达式 sed r s w s w d 这可以很好地去除块注释 例如 This is a comment this is another comment
  • LINUX:如何锁定内存中进程的页面

    我有一个 LINUX 服务器 运行一个具有大量内存占用的进程 某种数据库引擎 该进程分配的内存太大 需要将其中一部分换出 换出 我想做的是将所有其他进程 或正在运行的进程的子集 的内存页面锁定在内存中 以便只有数据库进程的页面被换出 例如
  • 在汇编中使用 printf 会导致管道传输时输出为空,但可以在终端上使用

    无输出 https stackoverflow com questions 54507957 printf call from assembly do not print to stdout即使在终端上 当输出不包含换行符时也有相同的原因
  • 如何在线程创建和退出时调用函数?

    include
  • awk 在循环中使用时不打印任何内容[重复]

    这个问题在这里已经有答案了 我有一堆使用 file 1 a 1 txt 格式的文件 如下所示 A 1 B 2 C 3 D 4 并使用以下命令添加包含每个文件名称的新列 awk print FILENAME NF t 0 file 1 a 1
  • ssh 连接超时

    我无法在 git 中 ssh 到 github bitbucket 或 gitlab 我通常会收到以下错误消息 如何避免它 输出 ssh T email protected cdn cgi l email protection i ssh
  • Tomcat Intellij Idea:远程部署

    RackSpace 云服务器 Ubuntu 12 04 Intellij Idea 11 1 2 Windows 8 Tomcat 7 0 26 JDK 6 在 Intellij Idea 上 当我尝试在远程 Tomcat 7 服务器上运行
  • vmsplice() 和 TCP

    在原来的vmsplice 执行 有人建议 http lwn net Articles 181169 如果您的用户态缓冲区是管道中可容纳的最大页面数的 2 倍 则缓冲区后半部分成功的 vmsplice 将保证内核使用缓冲区的前半部分完成 但事
  • ioctl 命令的用户权限检查

    我正在实现 char 驱动程序 Linux 并且我的驱动程序中有某些 IOCTL 命令仅需要由 ADMIN 执行 我的问题是如何在 ioctl 命令实现下检查用户权限并限制非特权用户访问 IOCTL 您可以使用bool capable in
  • 调用 printf 系统子例程在汇编代码中输出整数错误[重复]

    这个问题在这里已经有答案了 来回 在windows7控制台窗口中运行gcc s2 asm 然后生成一个exe文件 运行a exe 然后崩溃 为什么 s2 asm 代码由以下源代码生成 int m m 1 iprint m s2 asm请参考
  • Google BQ:运行参数化查询,其中参数变量是 BQ 表目标

    我正在尝试从 Linux 命令行为 BQ 表目标运行 SQL 此 SQL 脚本将用于多个日期 客户端和 BQ 表目标 因此这需要在我的 BQ API 命令行调用中使用参数 标志 parameter 现在 我已经点击此链接来了解参数化查询 h
  • 在 .gitconfig 中隐藏 GitHub 令牌

    我想将所有点文件存储在 GitHub 上 包括 gitconfig 这需要我将 GitHub 令牌隐藏在 gitconfig 中 为此 我有一个 gitconfig hidden token 文件 这是我打算编辑并放在隐藏令牌的 git 下
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的

随机推荐

  • Java基础系列-《流程控制--循环结构》

    前言 张浩Java考试成绩未达到自己的目标 为了表明自己勤奋学习的决心 他决定写一百遍 好好学习 天天向上 根据前面学习的内容我们知道System out println 好好学习 天天向上 可以将这句话打印出来 但是现在是要打印100次
  • 攻防世界NaNNaNNaNNaN-Batman

    打开压缩包观察web100的内容 看起来好像代码是吧 改后缀html浏览器打开 这个东西没有用 继续 查教程 发现有大佬说因为前面有script 基本可以藕断这是js代码 然后大佬又告诉我说把乱码最后的那个 eval改为alert在用浏览器
  • 文件管理服务器数据库,会博通系统的海量数据库管理策略

    在会博通的用户中 有些用户的数据量已达100GB 200GB 甚至数TB以上 并且 数据量还在迅速增长之中 为了满组客户海量数据管理的需要 会博通从多数据库管理和数据库本身的存储管理两方面提出策略与建议 多数据库管理 会博通的企业版支持多数
  • 【设计模式】代理模式

    Java 的代理模式是一种设计模式 它可以让一个对象 代理对象 代替另一个对象 目标对象 去执行一些操作 并且可以在执行前后添加一些额外的功能 代理模式可以实现对目标对象的功能扩展和保护 Java 的代理模式有两种实现方式 静态代理和动态代
  • 表单传值

    PHP中接收数据的三种方式 GET 接收GET方式提交的数据 POST 提交POST方式提交的数据 REQUEST 接收POST或者GET提交的所有数据 这三种方式都是超全局预定义数组 表单元素的 name 属性的值作为数组的下标 而val
  • 关于快速排序

    关于快速排序的一些知识以及代码实现 快速排序算法通过多次比较和交换来实现排序 其排序流程如下 1 首先设定一个分界值 通过该分界值将数组分成左右两部分 2 将大于或等于分界值的数据集中到数组右边 小于分界值的数据集中到数组的左边 此时 左边
  • 【单片机基础】ADC0832详解

    文章目录 一 ADC0832介绍 1 功能特点 2 引脚说明 3 ADC0832与单片机接口 4 工作时序 二 例程 一 ADC0832介绍 ADC0832 是美国国家半导体公司生产的一种8 位分辨率 双通道A D转换芯片 由于它体积小 兼
  • cubemx+stm32 气体传感器开发

    一 气体传感器 MQ系列 MQ5 可燃气体传感器 检测空气中的可燃气体浓度 单位ppm 是百万分之1 如果一立方米的空气 有一立方厘米的可燃气体 则浓度为1ppm 可燃气体对人体有害的浓度是200ppm 查看手册 可以看到 当浓度为500时
  • 机器学习之电子商务网站用户行为分析及服务推荐案例

    项目概述 本项目案例根据某法律咨询服务网站的用户浏览记录 把用户划分为训练集的用户和测试集的用户 再根据找出相应用户的浏览记录划分为训练集数据和测试集数据 训练集用于后续构建用户物品矩阵 再根据用户物品矩阵构建物品相似度矩阵 根据杰卡德相似
  • js实现将字符串里包含手机号的中间四位替换为****

    var character sd13564349471中 字符 1 判断该字符串里是否包含数字 function getNum text var value text replace 0 9 ig return value 2 if包含数字
  • 外网访问VMware虚拟机

    目的 主机上安装了VMware VMware上安装了Linux虚拟机 我安装的是Centos7 我想让虚拟机向外提供Web服务 本文记录如何让我的主机和外网用户可以访问VM虚拟机上的Web 网络环境 单IP服务器1台 提供固定IP1个 固定
  • java 私有云_基于MOS9.0的OpenStack私有云部署

    本手册中私有云部署操作是在完成Mos9 0源搭建的基础上 如果没有可用的Mos9 0源 fuel 请先完成Mos9 0源的搭建 一 网络环境要求 1 1网络清单 序号 网络名称 用途 1 PXE网络 用于OpenStack集群中其他节点从m
  • [转]QNX与Linux OS比较优劣-QNX与Linux两家未来有望独霸车载电子操作系统

    如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额0 1元起步 多少随意 声明 本文只用于个人学习交流 若不慎造成侵权 请及时联系我 立即予以改正 锋影 email 174176320 qq com 车载电子操作系
  • 密码学与网络安全笔记整理-数据完整性技术

    1 数据完整性 类似于通信中的校验码功能 在密码学领域数据完整性用于验证收到信息的正确性 校验收到的信息是否经过篡改 校验收到的信息是真实的发送者发送而非伪造 发送者通过编码为消息增加一些 冗余 生成一个校验值 并将该校验值附在消息之后 接
  • 基于深度学习的DDN图像去雨算法实战准备指南

    一 DDN图像去雨算法的复现代码下载 1 DDN的图像去雨算法的代码分为tensorflow版本和matlab版本 下载的链接分别如下 1 DDN tensorflow下载 https download csdn net download
  • border-box和content-box最直观的区别和解释

    Chrome浏览器box sizing默认是content box content box就是元素的width和height决定了元素的宽高 这意味着元素的border和padding等不能算在元素的width和height中 paddin
  • python怎么用for循环找出最大值_用for循环语句写一个在输入的十个数字中求最大和最小值的python程序应该怎么写?...

    在输入的十个数字中求最大和最小值的 python 代码 这个需求 在不同时间来看 解题思路不同 所需要的 python 知识点不同 作为萌新的我 为此特意整理了 3 种解法 以及相应的知识点笔记 解法A 不使用列表 min 或 max 只是
  • 笔记:Element UI Dialog弹框 水平垂直居中

    需求 element dialog 默认不是水平居中的 需要改为水平垂直居中 方法一 全局设置 在App vue中添加代码 全局设置 element ui dialog水平垂直居中 el dialog left 50 top 50 tran
  • 超全超详细的安装nvidia显卡驱动教程

    最近想做的事情有点多 感觉卡不够用了 师兄不知道在实验室机房哪个地方找了一个两卡的废旧服务器 开始上手才发现服务器显卡驱动都没装 显卡还是个GTX1060 6G 甜点级别显卡 跑点小东西玩玩 打点小比赛行了 准备工作 安装驱动 1 使用标准
  • udp包最大数据长度是多少

    原文地址 https blog csdn net caoshangpa article details 51530685 每个udp包的最大大小是多少 65507 约等于 64K 为什么最大是65507 因为udp包头有2个byte用于记录