Socket接收到的视频数据包,都存储到source.txt文件中,
然后读这个文件,找FFD8和FFD9之间的数据,写入dest.jpg文件中;
下面的算法不知道是否正确,查看dest.jpg文件看到不清楚。。。。

//保存接收到的MJPEG流数据包
    char   Dest[3000]; //存储接收到的数据包      
    nRet=0; //接收到的数据包长度

FILE* fp;  //写文件
fp= fopen("source.txt", "wb");

while(1 == bFlag)        
{   
nRet = recv(hsocket,(LPSTR)Dest,sizeof(Dest),0);        
if(nRet>0) 
{
Dest[nRet]=0; //添加结束标记
}

if (NULL != fp)
{
fwrite(Dest, nRet,1, fp);
}

Sleep(1);
} //while(1 == bFlag)

fclose(fp);

//从文本文件中读FFD8和FFD9之间的数据,保存到一张图片中
#define MAX_SIZE  1024*500

void CIPVideoDlg::OnButton5() 
{
unsigned char chBuf[MAX_SIZE] = {0};
    unsigned char chBegin[2] = {0xFF,0xD8};
    unsigned char chEnd[2] =   {0xFF,0xD9};
    int iLen = 0;
    int iBegin = 0;
    int iEnd = 0;

FILE* fp = fopen("source.txt", "rb+"); //读写方式打开二进制文件
    if (fp != NULL)
    {
        fseek(fp, 0, SEEK_END); //文件指针定向到文件结尾
        iLen = ftell(fp);       //获取文件长度  
        fseek(fp, 0, SEEK_SET); //定位到文件开始位置
        fread(chBuf, 1, iLen, fp);
        int ioffset = 0;        //偏移量,一次移动两个字节

while (1)
        {
//查找 FF D8
            if (!memcmp(chBuf+ioffset, chBegin, 2))
            {
                iBegin = ioffset;
            }

//查找 FF D9
            if (!memcmp(chBuf+ioffset, chEnd, 2))
            {
                iEnd = ioffset;
                break;
            }

ioffset += 2;
        }
    }
    fclose(fp);

fp = fopen("dest.jpg", "wb");
    if (NULL != fp)
    {
        fwrite(chBuf+iBegin, iEnd-iBegin+2,1, fp);
    }
    fclose(fp);
}

Socket收到MJPEG视频数据包,如何查找FFD8和FFD9?相关推荐

  1. vlc-android对于通过Live555接收到音视频数据包后的处理分析

    转载地址:https://blog.csdn.net/c_m_deng/article/details/8487456 通过ndk-gdb跟踪调试vlc-android来分析从连接到RTSP服务器并接 ...

  2. SOCKET通信中TCP数据包大小的确定

    MSS(maximun segment size)         最大分段大小,TCP有一个最大分段大小,用于通告对端每个分段中能发送的最大TCP数据量.MSS的目的是告诉对端其重组缓冲区大小的实际 ...

  3. 使用 WinSCP 连接到 VCSA 6.5 失败并显示以下错误:收到的 SFTP 数据包过大

    Symptoms 使用 WinSCP 连接到 vCenter Server Virtual Appliance 会出现类似以下内容的错误: Cause 由于vcsa默认的root账号shell环境是/ ...

  4. 【FFMPEG】基于RTP的H264视频数据打包解包类

    最近考虑使用RTP替换原有的高清视频传输协议,遂上网查找有关H264视频RTP打包.解包的文档和代码.功夫不负有心人,找到不少有价值的文档和代码.参考这些资料,写了H264 RTP打包类.解包类,实现 ...

  5. 交换机工作原理,收到一个数据包后交换机是如何处理的(实验加抓包详细了解)

    感受集线器 在基础课程里面了解过集线器的原理,那会没有太多的去做实验,这里我们使用eNSP来做一个实验,正好支持HUB这个设备. 这里使用192.168.255.1去ping 192.168.255. ...

  6. tcpdump使用详解及数据包分析

    tcpdump使用与数据分析 语法 tcpdump(选项) 选项 -A 以ASCII码方式显示每一个数据包(不会显示数据包中链路层头部信息). 在抓取包含网页数据的数据包时, 可方便查看数据(nt: ...

  7. 数据包从物理网卡流经 Open vSwitch 进入 OpenStack 云主机的流程

    目录 文章目录 目录 前言 数据包从物理网卡进入虚拟机的流程 物理网卡处理 如何将网卡收到的数据写入到内核内存? 中断下半部分软中断处理 数据包在内核态 OvS Bridge(Datapath)中的处 ...

  8. tcpdump 网络数据包分析工具

    简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的 ...

  9. 自定义Udp/Tcp协议,通信协议Socket/WebSocket,IM粘包、分包解决等(2),ProtocolBuffer

    > 自定义Udp/Tcp协议/通信协议(Java/C):自定义构建和解析IM协议消息:IM自定义UDP通信协议   类似于网络通信中的TCPIP协议一般,比较可靠的通信协议往往包含有以下几个组成 ...

最新文章

  1. 征文 | “‘互联网+’背景下大数据与税收征管的深度融合研究” 专题征文启事...
  2. 86. Leetcode 264. 丑数 II (动态规划-基础题)
  3. python numpy ufunc.reduce(self, a, axis=0, dtype=None, out=None, keepdims=False)函数.(连续执行原始运算对值聚合)
  4. explain分析执行计划
  5. 关于报错:'nvidia-smi' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  6. 权限管理数据表设计说明
  7. Python——常见数据类型的调试笔记(“如何通过Debug信息判断数据类型”)
  8. 基于Java毕业设计幼儿园教育管理信息系统演示2021源码+系统+mysql+lw文档+部署软件
  9. 应用统计学学什么科目_统计学考研初试都要考哪些科目?
  10. react项目里添加支持less(无webpack.config.js如何设置
  11. 行严格对角占优矩阵——一道矩阵代数作业题
  12. 直流电机参数术语中英文对照及解释
  13. 计算机组成原理实验报告JMPR,计算机组成原理实验四:组合逻辑控制器部件教学实验...
  14. 【数字图像处理】实验一 图像的平移,缩放和旋转(vs2017+opencv)
  15. C语言 内存管理的细枝末节
  16. mysql基础----基本命令与13道练习
  17. Java (过河卒)
  18. Element UI select 下拉框样式覆盖
  19. 2014年八大信息安全峰会演讲PPT下载
  20. 第四轮学科计算机科学,电子科学与技术排名:教育部第四轮学科测评完整版

热门文章

  1. 有趣的Hack-A-Sat黑掉卫星挑战赛——跟踪卫星
  2. Honeypot Networks
  3. python可变参数 *args **kwargs使用说明
  4. 关于uniapp 打包小程序包过大问题
  5. windows无法打开添加打印机 本地打印后台
  6. Android Things创客DIY第六课-Android Things入门配件包开发案例教程-4位数码管显示
  7. layer的简单的使用
  8. nest.js 链接不上数据库 errno 1049
  9. 搜狐校园实习招聘笔试题
  10. hyperledger fabric 网络操作基本操作和概念