Здравствуйте.
у меня такая проблема. Я читаю видео передающееся по RTP через UDP сокет.Клиент находиться в локальной сети. При чтении я теряю некоторое количество дейтаграмм . Хотя для udp это нормально, но я думаю что дело в переполнении буфера приема сокета (udp_recvspace), потому что
1) снифер который работает у меня на компе ловит почти все дейтаграммы, гораздо больше чем я теряю.
2) при большой компрессии видео я данные почти не теряю.
3) есть прога которая воспроизводит видео с источника без потери данных (исходников нет).
Как можно избежать переполнения? Читаю я в цикле, отдельным потоком, никаких дополнительных действий в этом потоке не произвожу.
Есть некоторые соображения: использовать raw сокеты,или просто увеличить буфер udp_recvspace с помощью функции setsockopt(). Подскажите, что лучше?
PS Ось винда.
5 августа 2008 в 10:04
не select точно не поможет, у меня сокет в потоке всегда ожидает данные (блокирован recv) и то пакетики теряются. все советуют увеличить буфер.
4 августа 2008 в 21:03
может быть все-таки select?