Я работаю над клиент-серверным приложением.Мое приложение работает с пакетами переменного размера, каждый пакет имеет заголовок и полезную нагрузку переменной длины.
Моя дилемма - лучший подход для обработки пакетов при выполнении recv.Большинство учебных пособий, с которыми я сталкивался, предлагают использовать кольцевой буфер, но, насколько я могу судить, более эффективно использовать буфер, размер которого в два раза больше размера самого большого пакета, который вы можете обработать.
Если яиспользовать кольцевой буфер Мне нужен дополнительный буфер для recv, а затем мне нужно скопировать буфер в кольцевой буфер, что означает, что мне нужно сделать один или два memcpys, чтобы вставить буфер в кольцевой буфер
Если я используюПодход с одним буфером Мне нужен только один буфер, который я могу передать в вызов recv и вызов memmove, чтобы переместить данные в начало буфера, когда я получил полный пакет, и в буфере все еще есть данные, принадлежащие другому пакету.
Я что-то не так понимаю?
PS.Если вы можете указать мне любой исходный код / пример, где обрабатываются пакеты переменной длины, это было бы полезно.