singlepost

Переполнение буфера приема сокета << На главную или назад  

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

2 ответов в теме “Переполнение буфера приема сокета”

  1. 2
    Анзор Апшев ответил:

    не select точно не поможет, у меня сокет в потоке всегда ожидает данные (блокирован recv) и то пакетики теряются. все советуют увеличить буфер.

  2. 1
    Леонид Максимов ответил:

    может быть все-таки select?

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.