文章目录

  • 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. Eclipse SDK构建J2EE开发环境
  2. 花小猪,真正的对手是谁?
  3. 正则表达式:Pattern 与Matcher
  4. 易驾佳智能机器人教练_机器人教练创始人马宏先生受邀到中国人民大学进行经验分享...
  5. c语言编程15,c语言编程15题.doc
  6. Python的第三方库fileType
  7. Elementary OS 使用fcitx安装搜狗词库、搜狗输入法(Ubuntu通用)
  8. 使用FlashCS6制作cocos2d-x动作脚本的思路整理
  9. python画折线统计图画区间_matplotlib-折线图、散点图
  10. torch 中的 stft、torchaudio 中的 Spectrogram、Melscale、MelSpectrogram 的使用
  11. 解除宝塔面板强制绑定手机号教程
  12. 中国塑料杯市场需求预测与发展前景分析报告2022-2027年
  13. xp如何快速升级win10系统
  14. 163免费邮件群发平台,企业群发邮件的哪个好?企业邮件群发助手
  15. Visual Paradigm 如何绘制平面图?
  16. 【ModelMapper简单使用】
  17. 虚拟主机mv命令选项移动文件夹
  18. easyefi添加引导盘重启消失引导解决办法
  19. 互联网日报 | 蔚来汽车股价年内涨幅近十倍;小米成立可穿戴部;恒大物业拟12月2日港交所上市...
  20. codeforce_div3_round527_ABCDEF

热门文章

  1. python3调用arcpy地理加权回归_地理加权回归( GWR)
  2. 浅谈数据分析和数据建模
  3. 【读书笔记】企业IT架构转型之道 阿里巴巴中台战略思想和架构实战
  4. tiledmap 图块属性_cocos2dx[3.4](25)——瓦片地图TiledMap
  5. 免费进销存真的好用吗?一文告诉你真相
  6. mysql数据类型及占用字节数
  7. 易班自动答题脚本_如何使用python进行自动网上考试
  8. cocos2dx lua 升级spine兼容Spine库v3.8到最新版本
  9. 倍福TwinCAT3中控制台达A2伺服使用
  10. 白话空间统计之二十五:空间权重矩阵(三)解构空间权重矩阵