zoukankan      html  css  js  c++  java
  • 屏幕广播的实现(三)


    上次说到运用IP组播来实现一对多的数据传输。但UDP数据包的大小有限制,图片需分块传输,并且UDP是不可靠的协议。会出现丢包的现象。导致接收方不能接收到完整图片。
    一开始很自然的想到,那么重新传输就是了。但是对于一对多的传输来说,还是传输量太大。,最后经过在CSDN的搜索,找到一种方法

    (CSDN地址http://download.csdn.net/detail/ztxzyr/3824829)。

    说的浅显一点,就是发送端只管发,接收端判断是不是一个完整的图片数据~。通过一个结构体,带有一个数据块的各种信息。

    这是我们组里大神定义的一个结构体。

    #define MAXBUFSIZE            (32 * 1024)        //缓冲区最大值
    //UDP数据包
    typedef struct _UDPPACKAGE{
        DWORD    dwIndex;            //当前包序号
        DWORD    dwTotalSize;        //数据总大小
        bool     bFinish;            //是否已结束
        char     buf[MAXBUFSIZE];    //数据缓冲区
        DWORD    dwDataSize;         //缓冲区数据大小
    }UDPPACKAGE, *PUDPPACKAGE;

     假设一个图片被分成四部分。那么四个数据都填充在四个结构体内,其中的dwIndex按照的顺序。并且最后一个数据包中的bFinish为true,其余三个为false。发送端只管按照顺序发,而接收端需要做的就是按照顺序接收。当顺序不对的时候则丢弃数据并且停止接收,直接接受下一张图。直到数据包按照顺序的发送过来并且接收到了true,则写入数据。

     

    如图。接收端只负责接收按顺序传送的数据包。其余的不处理。

  • 相关阅读:
    根据出生日期来计算年龄
    tomcat 7 7.0.73 url 参数 大括号 {} 不支持 , 7.0.67支持
    hdu 1272(并查集)
    hdu 1558(计算几何+并查集)
    hdu 1856(hash+启发式并查集)
    hdu 1598(最小生成树)
    poj 3164(最小树形图模板)
    hdu 2489(状态压缩+最小生成树)
    hdu 3371(启发式合并的最小生成树)
    hdu 1301(最小生成树)
  • 原文地址:https://www.cnblogs.com/zkkkkkky/p/4423003.html
Copyright © 2011-2022 走看看