有个问题:传输文件,比如传 1M ,收到不一定按顺序的。怎么样重组呢???有没有这方面的源代码?

解决方案 »

  1.   

    算吗?不清楚啊~ !只要告诉我怎么样传文件。然后怎么样判断那个SEND 过来的信息是哪一块?
      

  2.   

    写个包头,如rtp包的ssrc,按顺序递增(+1),到客户端那判断是否丢包并重排
      

  3.   

    发包时可以使用一个结构打包,使用package打包数据,发送char *, 收到数据后将数据按Unpackage解包,用链表什么的记录,最后将包一个个按index排序即可。
    写个简单例子,错误处理也不严谨了, 大概如此吧。struct SSendBlock
    {
       int  nIndex;
       char cBuffer[1024]; //使用动态分配也可以,不过需要带上包尺寸了,尺寸计算也需要注意.
       
       char *Package(int &nSize)
       {
         nSize = sizeof(*this);
         return (char *)this;    
       }
       
       bool UnPackage(const char* RecvBuffer, int nSize)
       {
         assert(nSize != sizeof(*this);
         if (nSize != sizeof(*this) return false;     memcpy((char *)this, RecvBuffer, nSize);
         return true;
       }
    }