Rx缓冲区Winsock套接字编程C++.如何清除RX缓冲区
Rx Buffer Winsock Socket programming C++. How to clear RX buffer?
我正在接收连续的视频流,我必须解码并显示它。摄像头每秒发送约20k个数据包(1288字节)。我得到流大约10秒,相机停止传输流。我认为这是由于缓冲。我正试图通过以下代码清除我的缓冲区:
long a = 9965535;
if (setsockopt(camm, SOL_SOCKET, SO_RCVBUF, (const char*)&a, sizeof(long)) == -1) {
fprintf(stderr, "Error setting socket opts: %sn", strerror(errno));
}
do{
Siz = recvfrom(camm, message, 1300, 0, (struct sockaddr *) &cam, &caml);
image(message, Siz);
aab++;
if (aab > 1000){
// memset((char *)&ap, 0, 65535);// &ap, 65535
//ap = "1288";
// memset(&a, 0, 9965535);
// *loc = 9965535;
// memset(loc, 0, 9965535);
aab = 0;
}
} while (Siz > 0);
有人能帮我解决这个问题吗?
事实上,我不希望完整的帧被解码。我只需要解码可用的帧。意味着丢弃无法进行处理的剩余帧。
唯一的方法是实际从套接字中读取。您可以考虑在专用线程中进行读取,并让它仅在缓冲区为空时将视频帧存储在内存缓冲区中,同时丢弃其他帧。然后,另一个线程可以根据需要在自己的时间读取并清除该内存缓冲区。
相关文章:
- 清除输入缓冲区后未提取字符串流
- libQGLViewer 如何在没有清除缓冲区的情况下绘制
- C++使用libarchive和archive_write_open_memory..如何清除缓冲区
- 安全操作以清除C++中的空输入缓冲区
- 清除缓冲区独立于操作系统
- 忽略替代,清除缓冲区中的所有内容
- 在Android/OSL中,我可以在bufferQueue中释放单个缓冲区并将其排队,而不是清除整个缓冲区吗
- C 忽略和清除缓冲区
- 如何在C 中清除Isringstream对象的缓冲区
- 如何在C 中清除输入缓冲区
- cin.clear() 如何清除输入缓冲区
- 如何刷新或清除 GetAsyncKeyState 的缓冲区
- C++清除输入缓冲区(最后没有换行符)
- 清除 cout 缓冲区 (c++)
- 为什么我的编译器在尝试清除 CIN 缓冲区时抱怨
- 为什么我们必须在渲染过程中清除 OpenGL 中的深度缓冲区
- 如何在使用之前清除内部服务器套接字缓冲区的内容
- 清除输入缓冲区中的所有其他字符
- OpenGL:清除模板缓冲区,某些位除外
- 缓冲区已满时清除字符串缓冲区.这是什么图案