现在又两个线程一个线程做接收视频流,另一个解码显示。现在接收线程在接受组播数据的时候会丢帧,视频每帧不超过4096,通常在1k左右,
我接受端的代码如下  各位高手帮我看看 急死我了
int iRet = select(0,&fdRead,NULL,NULL,&timeout);if(iRet < 1)
return;

m_nDataRecv  = recv(m_socketupd, (char *)pBuffer, sizeof(pBuffer), 0); 现在我把pbuffer的数据保存成文件,发现会丢帧,不知道为什么,刚开还正常  后来就越来越严重了

解决方案 »

  1.   

    UDP传播数据,你需要做确认,不仅仅是丢包,而且次序也可能是乱的。你需要封装传递的数据块,每块数据前增加包的索引标记,接受方进行确认,如果有必要则要求重新发送指定数据块
      

  2.   

    楼上说的对,UDP是不可靠传输,它不像TCP那样传输可靠没有乱包的现象
      

  3.   



    自己做确认协议吧,不然就用tcp
      

  4.   

    当网络环境有影响时,就可能发生丢包,做一个确认协议,或者TCP等来防止丢包
    UDP本身就不保证不丢包
      

  5.   

    自己做协议吧,视频流最好用udp传输,发送端给包编号,接受端按编号排序即可
      

  6.   

    udp是无连接的不可靠的协议。当网络比较忙的时候,会发生丢包。