Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Сети > Извлечение данных из ip-датаграмм |
Автор: daff 16.5.2009, 23:48 | ||
Доброго времени суток!!! Необходимо написать снифер пакетов и далее анализатор - пакеты у меня ловятся и из них вычленяется заголовок ip, а проблемма состоит в том , что я не могу извлечь непосредственно данные!
пытаюсь достать данные следующим образом - &btBuffer[sizeof(IPHeader) * 2]) - для UDP пакетов что-то вроде доста>тся, а вот для TCP ничего нет!!!! |
Автор: MAKCim 17.5.2009, 09:51 | ||
во-первых, все структуры должны быть упакованными для TCP
|
Автор: daff 17.5.2009, 17:47 |
А для чего требуется упаковка? И как после упаковки достать данные? |
Автор: MAKCim 18.5.2009, 21:24 | ||
чтобы избежать проблемы увеличения размера структуры из-за выравнивания кроме того, вместо int, short и т. д нужно использовать фиксированные типы int16, int32 и т. д точно так же кроссплатформенный пример упаковки
|
Автор: REZiaMIX 20.5.2009, 18:19 | ||
Значит так , в хеадере есть поле - длина пакета. Сами данные идут после хеадера. Т.е. смысл таков:
(думаю суть понятна) Соответственно структура должна быть с правильным выравниванием. Иногда надо не забывать об обратном порядке байт =) |