Необходимо парсить простенкий протокол, не бить ногами , данные приходят через UDP .
Сам протокол такого формата
HEADER,DATA1,DATA2,DATA3\r
На python использовал таблицу с хандлерами и раскидивал пакеты по типу HEADER.
Думал использовать такой подхот в C но незнаю если это хорошый выбор.
Может есть идея или совет по етому поводу ?
Здравствуйте, Abyx, Вы писали:
A>Здравствуйте, sv06000, Вы писали:
S>>Думал использовать такой подхот в C но незнаю если это хорошый выбор.
A>да, использование С — это плохой выбор.
Здравствуйте, sv06000, Вы писали:
S>Необходимо парсить простенкий протокол, не бить ногами , данные приходят через UDP . S>Сам протокол такого формата S>HEADER,DATA1,DATA2,DATA3\r
S>На python использовал таблицу с хандлерами и раскидивал пакеты по типу HEADER. S>Думал использовать такой подхот в C но незнаю если это хорошый выбор. S>Может есть идея или совет по етому поводу ?
А по какому поводу собственно?
Если как строку распарсить в C то нет ничего проще чем
char header[NN]; int d1,d2,d3;
int n_fields_parsed = sscanf(inout,"%s,%d,%d,%d", header,&d1,&d2,&d3);
Если вопрос "раскидивал пакеты" то расскажи что именно под этим скрывается.
Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, sv06000, Вы писали:
S>>Необходимо парсить простенкий протокол, не бить ногами , данные приходят через UDP . S>>Сам протокол такого формата S>>HEADER,DATA1,DATA2,DATA3\r
S>>На python использовал таблицу с хандлерами и раскидивал пакеты по типу HEADER. S>>Думал использовать такой подхот в C но незнаю если это хорошый выбор. S>>Может есть идея или совет по етому поводу ?
CS>А по какому поводу собственно?
CS>Если как строку распарсить в C то нет ничего проще чем CS>
CS>char header[NN]; int d1,d2,d3;
CS>int n_fields_parsed = sscanf(inout,"%s,%d,%d,%d", header,&d1,&d2,&d3);
CS>
CS>Если вопрос "раскидивал пакеты" то расскажи что именно под этим скрывается.
Регистрирую таблицу с указателями на функции для каждего типа header.
Пробегаю по таблице если функция наидена вызываю её для обработки данных.
Здравствуйте, kaa.python, Вы писали:
KP>Здравствуйте, Abyx, Вы писали:
A>>да, использование С — это плохой выбор.
KP>Для разбора столь простого протокола, Си ни чем не хуже C++. Впрочем, как и для многих других куда более сложных задач.
Разбор протокола это толко маленькая часть проэкта и неохота писать switch case на тону строк
Вопрос как организовать по умному это дело
Здравствуйте, kaa.python, Вы писали:
A>>да, использование С — это плохой выбор.
KP>Для разбора столь простого протокола, Си ни чем не хуже C++. Впрочем, как и для многих других куда более сложных задач.
сразу видно человека разбирающегося в программировании.
конечно ничем не хуже, языки-то почти одинаковые.
и код главное одинаковый. такой же объем, такая же безопасность, такое же удобство поддержки.
ну и главное юнит-тесты также удобно писать. или они не нужны? ну это вобщем-то не важно.
Здравствуйте, kaa.python, Вы писали:
A>>сразу видно человека разбирающегося в программировании.
KP>Рад что тебе нравится. Ты до сих пор не научился во время проф.дискуссий на личности не переходить, вроде взрослый дяденька?
какие еще личности? я тебя похвалил, написал что ты "человек разбирающий в программировании". что тебе не нравится?
что касается взрослых дядек, то я тут кстати одного знаю, который С от С++ отличить не может, а понтов на весь форум.
печально же, из за таких как он — индустрия до сих пор в заднице, вот тот жа openssl — такие чудаки его писали на Си, потому что он "ничем не хуже С++", а потом там и хартблид, а потом еще какая-то зараза.
Здравствуйте, sv06000, Вы писали:
S>Регистрирую таблицу с указателями на функции для каждего типа header. S>Пробегаю по таблице если функция наидена вызываю её для обработки данных.
Здравствуйте, B0FEE664, Вы писали:
S>>Регистрирую таблицу с указателями на функции для каждего типа header. S>>Пробегаю по таблице если функция наидена вызываю её для обработки данных.
BFE>На С можно сделать ровно так же.
еще можно gperf'ом сгенерирвать perfect hash функцию которая на "zero","one","two","three" выдает 0,1,2,3 для индексации в том массиве...
Re: C парсить текстовый протокол
От:
Аноним
Дата:
05.08.14 06:50
Оценка:
Здравствуйте, sv06000, Вы писали:
S>Необходимо парсить простенкий протокол, не бить ногами , данные приходят через UDP . S>Сам протокол такого формата S>HEADER,DATA1,DATA2,DATA3\r
S>На python использовал таблицу с хандлерами и раскидивал пакеты по типу HEADER. S>Думал использовать такой подхот в C но незнаю если это хорошый выбор. S>Может есть идея или совет по етому поводу ?