Фрагментация больших данных на небольшие пакеты с использованием языка Си
Как фрагментировать большие данные в маленькие пакеты. поскольку я новичок, я не могу этого достичь, кто-нибудь поможет фрагментировать большие данные на маленькие пакеты .
скажем, у меня есть 22 КБ jpeg-файла, который я хочу разделить на небольшие пакеты по 960 байт каждый. для jpeg будут начальные два бита, а конечные два бита будут фиксированными значениями.
то, что я пробовал, это:
Что я уже пробовал:
pstart =buffer; if (!frame_active) { if ((pstart[0] == 0xff) && (pstart[1] == 0xd8)) { frame_active = 1; frame_started = 1; } } if (frame_active) { // If an end of frame marker was pending (last byte of previous sample // was 0xff) then check first byte might be EOF marker. if (frame_eof_pending) { if (*pstart == 0xd9) { // Only first byte of this sample is valid. len = 1; frame_active = 0; frame_ended = 1; //m_SendIdx++; } frame_eof_pending = 0; } // Look for end of frame markers in this sample. if (frame_active) { pmark = pstart; while (pmark) { pmark = memchr(pmark, 0xff, sample_length - (pmark - pstart)); if (pmark) { pmark++; if ((pmark - pstart) == sample_length) { //The last byte of the sample is 0xff so there might be //and end of frame marker continued on the next sample. frame_eof_pending = 1; } else if (*pmark == 0xd9) { // Length of remaining data is up to and including the // 0xd9 of the end of frame marker. len = pmark - pstart + 1; frame_active = 0; frame_ended = 1; } } } }ЛЮБАЯ ПОМОЩЬ БУДЕТ ОЦЕНЕНА ПО ДОСТОИНСТВУ , СПАСИБО.
Richard MacCutchan
Это довольно простое дело-прочитать файл 960 (или любое другое число) байт за один раз и отправить их на удаленный конец. Добавление байтов префикса и суффикса помогает каждому концу поддерживать синхронизацию.
Balaraj Nayak
Привет @Richard MacCutchan, если это возможно , не могли бы вы показать написанный код для меня?, скажем, это файл размером 22k байт, если я хочу отправить каждый пакет с размером 960, последний пакет не будет точным 960 байт.