文章目录

  • UDP文件上传
    • 包结构
    • 客户端
    • 服务端

UDP文件上传

项目gitee地址

通过socket(AF_INET, SOCK_DGRAM, 0)建议数据套接字,实现udp协议上传视频操作。

可以上传10M级文件,更大一点的没有测试,应该也可以传输。

内部实现通过malloc动态分配内存,给数据包打上用户id,包索引值,以及结束标识符。

包结构

发送接受的包结构示意:

  • [index] [flag] [userId] [data]

    • index:包索引值
    • flag:标识字节,如果为0表示该包为中间包,为1表示为结束包,大于1表示此时传送的是第一个包,flag为长度值。
    • userId:用户id标识。
    • data:字符串数据指针,最大长度为1K。

客户端

先生成一个userId,然后每个包的第三个字节都为这个userId,表示这些包是同一个客户机发送的。

1、开始包:上传时先发送文件长度包,服务端根据文件长度包动态构建缓冲区存储数据。
2、中间包:中间包发送数据,并通过变量i给每个包打上索引值。
3、结束包:发送结束包时将flag置1。

发送需要一定延迟 避免服务器处理不过来

服务端

  • 1、定义一个结构体用来保存用户的数据缓冲区。并定义一个大小为10的全局数组,表示同时最多可以有十个用户传输数据。
struct RecvData {// 标识用户int userId;// 是否结束,1表示结束int flag;// 数据缓存区// char buff[PACKET_SEQ][LENGTH];char **buff;
};
// 定义单个用户的结束数据类型
typedef struct RecvData RecvData;// 定义10个用户存储区
RecvData datas[DATAS_LENGTH];
  • 2、接收数据,先解包,提取前三个字节的值。然后有三种包:

    • 1、如果index=0表示为第一个包,为长度包,将userId占用一个缓冲区,并为其分配相关长度的内存。
    • 2、如果index不等于0并且flag不为1,表示这个包为中间包,将它的数据拷贝到其userId所在的缓冲区的buff[index]中。
    • 3、如果flag为1,表示这个包为结束包,打印相关信息,然后新开一个线程生成文件。
  • 3、生成文件。将指定userId对应的RecvData块的buff指针中的数据按照index的顺序逐步取出,然后写入创建的文件中,最后清理userId所占用的那个RecvData块,准备被下一个userId占用。

Linux C语言UDP实现视频文件上传相关推荐

  1. 如何基于OSS和MPS,快速搭建音视频文件上传服务?

    背景 本文主要介绍如何基于OSS服务和MPS的上传SDK,快速搭建一个音视频文件上传服务. 优势 使用MPS的上传SDK上传音视频文件,具有以下优势: 增加文件列表管理功能. 增加STS Token ...

  2. 如何基于OSS和MTS,快速搭建音视频文件上传服务?

    摘要: 背景 本文主要介绍如何基于OSS服务和MTS的上传SDK,快速搭建一个音视频文件上传服务. 优势 使用MTS的上传SDK上传音视频文件,具有以下优势: 增加文件列表管理功能. 增加STS To ...

  3. linux+nginx+mysql+php系统修改文件上传大小限制

    linux+nginx+mysql+php系统修改文件上传大小限制 对于LNMP框架的一些网站,上传文件大小会受到多个方面的限制,一个是nginx本身的限制,限制了客户端上传文件的大小,会报错&quo ...

  4. php视频上传教程,PHP实现视频文件上传完整实例,_PHP教程

    PHP实现视频文件上传完整实例, 本文以一个完整实例的形式实现了视频文件上传的功能.虽然是比较基础的应用,仍有一定的参考价值.分享给大家供大家参考之用.具体方法如下: 首先,对PHP来说视频也属于文件 ...

  5. android 与后台实时视频,android选择视频文件上传到后台服务器

    本文实例为大家分享了android选择视频文件上传到后台服务器的具体代码,供大家参考,具体内容如下 选择本地视频文件 首先第一步打开打开相册选择视频文件: Intent intent = new In ...

  6. 解决阿里云oss文件上传部分MP4格式视频文件上传导致上传崩溃问题

    解决阿里云oss文件上传部分MP4格式视频文件上传导致上传崩溃问题 问题描述 java程序,使用阿里云oss文件上传服务,在测试时偶然发现,我用苹果手机开启高清进行摄像,将原图通过qq传到电脑上,在电 ...

  7. linux 安装上传文件,linux常用命令(二)文件上传下载及软件安装

    1.上传下载工具安装 (1)WINDOWS 到linux的文件上传及下载: windows下打开secureCRT,通过SSH连到⾄至远程linux主机: 上传下载工具安装命令:yum -y inst ...

  8. 大视频上传服务器,支持HTML5断点续传,支持4GB以上大视频文件上传

    当前,我们正处于一个视频爆炸的时代,高清智能手机人人都有,各种场景下的视频应用越来越多,4K高清视频正在普及,视频文件尺寸动辄几个GB.当我们需要和他人分享这些大视频时,视频的上传和断点续传文件立马出 ...

  9. 阿里云视频点播服务SDK的使用,视频文件上传测试

    文章目录 阿里云视频点播技术简介 一.阿里云视频点播技术能力盘点 1.应用场景 2.功能介绍 二.开通视频点播云平台 1.选择视频点播服务 2.开通视频点播 3.选择按使用流量计费 4.资费说明 5. ...

  10. m3u8 php vob 服务器,视频文件上传服务器使用FFmpeg自动切片成m3u8

    程序运行环境:lnamp centos 6.8 nginx 1.6 apache 2.4 mysql 5.5 php 5.6 遇到问题: 1,js 上传文件,由于文件服务器不是本地服务器,单独配置的文 ...

最新文章

  1. 注意力机制又一大作!DCANet:学习卷积神经网络的连接注意力
  2. sql int转换为varchar_常见SQL优化实践
  3. jQuery最佳实践
  4. 原生html小游戏,原生JS实现别踩白块小游戏(一)
  5. Android复习11【service-音乐播放器、定时器、IntentService、ALDL使用】
  6. JavaScript--获取页面盒子中鼠标相对于盒子上、左边框的坐标
  7. 电子科技大学2019年计算机复试分数线,2019考研电子科技大学复试分数线已公布...
  8. 中山大学附属第一医院精准医学研究院 消化系统肿瘤研究于君课题组招聘启事...
  9. 发布会不用开了?三星Galaxy Note 10 Plus完整规格泄露
  10. 图的广度优先搜索遍历
  11. 获取当前日期是本年的第几周java与mysql获取值不一致
  12. 6.1-数据结构算法-堆栈与队列
  13. 5步绘制软件开发流程图
  14. 广域网SDN功能与架构
  15. HttpUtil工具示例(GET、POST请求)IP工具根据token获取用户信息工具
  16. 抖音内容运营全解剖,看这一篇就够了 !
  17. Open RAN:3W1H法带你了解5G!
  18. 51单片机中断基本概念
  19. bigemap如何导入矢量边界范围下载地图(KML/KMZ/SHP)
  20. OKL4虚拟化技术跟踪

热门文章

  1. 地图投影和矢量瓦片详解
  2. ArcView GIS 应用与开发技术(10)-影像操作
  3. UI设计师常用500多款字体和73款手写字体打包
  4. 专业测试工程师浅谈功能测试用例模板设计
  5. Google验证码ReCaptcha V3
  6. ps怎么制作流体_PS制作流体字
  7. Spine(2d动画制作软件)绿色中文最终优化版V3.8.75 | spine动画软件下载
  8. 2021综述:计算机视觉中的注意力机制(续二):空间注意力
  9. Proteus软件仿真学习——整流桥电路
  10. SQL 比较时间大小