| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Сети > Как очистить буфер сокета но при этом оставить |
| Автор: Nuzur 11.10.2007, 17:25 |
| Сабж. |
| Автор: ptr 12.10.2007, 05:51 |
| Что recv уже не моде? А зачем потребовалось буфер то очищать? |
| Автор: Nuzur 12.10.2007, 09:12 |
| ptr, recv и пользуюсь, буфер нужно очищать ибо идет интенсивный обмен между модулями и нужно кормить лиш частями которые до этого не принимали участие в обработке, а сохранять то что уже передал в каком то буфере а потом их сравнивать нет возможности :( Ситуация осложняется тем что заранее неизвестно размер пакета а пакет нужно передать целиком, посему постоянно получается информация до момента либа таймаута либо до момента остановки передачи, что то в духе внутреннего тайм аута. ЗЫ С одной стороны я уже решил задачу, но решение - велосипед. ЗЫ Спросить каков размер буфера до его получения невозможно ибо это внешнее устройство и оно молчит как партизан. ЗЫ Знаю что это все возможно не правильное планирование, но мы живем в материальном мире :( |
| Автор: GrayCardinal 12.10.2007, 10:26 | ||
Берём :
возвращает кол-во байт, доступных для чтения (т.е. которые в приёмном буфере), Затем, собственно, recv читаем эти байты... куда-нибудь. Всё, буфер чист... |
| Автор: Nuzur 17.10.2007, 16:03 |
| GrayCardinal, а будет ли оно верно работать в том случаи если мы при выполении функции попали на середину передачи, тоесть выполнитса ли функция или будет ждать финала передачи? И как она узнает когда передача будет завершена? |
| Автор: GrayCardinal 17.10.2007, 16:09 |
| Nuzur, Никак не узнает. Вернёт только сколько уже есть, ничего дожидаться не будет... Добавлено через 1 минуту и 44 секунды ЗЫ Удобно при получении UDP-шек, позволяет размер буфера делать один к одному, но и с TCP работает ... |
| Автор: Nuzur 17.10.2007, 16:55 |
| GrayCardinal, тогда это не решает моей проблемы... |