Rx Buffer Winsock Socket编程C ++。如何清除RX缓冲区?

时间:2015-12-31 14:07:04

标签: c++ sockets winsock

我正在接收连续视频流,我必须解码并显示它。 相机每秒发送约20k包(1288字节)。我正在流式传输到10秒钟,相机停止传输流。我认为这是缓冲区。我试图通过以下代码清除缓冲区:

$transaction = Yii::app()->db->beginTransaction();
try {
    if (!$firstmodel->save()) {
        throw new Exception('FirstModel cannot be saved.');
    } else {
        if (!$secondmodel->save()) {
            throw new Exception('SecondModel cannot be saved.');
        } else {               
            if (!$thirdModel->save()) {
                 throw new Exception('ThirdModel cannot be saved.');
            }
        }
    }

    $transaction->commit();

} catch (Exception $e) {
    $transaction->rollback();
}

任何人都可以帮我解决这个问题吗?

实际上我不希望全帧被解码。我只需要解码可用的帧。意味着丢弃无法进行处理的剩余帧。

1 个答案:

答案 0 :(得分:1)

唯一的方法是从套接字中实际读取。您可以考虑在专用线程中进行读取,并且只有在缓冲区为空时才将视频帧存储在内存缓冲区中,同时丢弃其他帧。然后,另一个线程可以根据需要在其自己的时序上读取并清除该内存缓冲区。