![]() |
|
Модераторы: feodorv |
![]()
|
|
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 13 Всего: 110 |
asmdzen, ты путаешь тем, что объясняешь задачу так, каким ты ее решение видишь. просто объясни цель/ТЗ.
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
+ невозможность построения динамичной цепочки, а нам неизвестно можно ли от этого отказаться в теме для новичков призывать использовать сложные для понимания конструкции, когда они еще с простыми не разобрались - это два |
|||
|
||||
| boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 13 Всего: 110 |
ну... я представил что протоколов не бесконечно много. это раз.
я же поинтересовался у вопрошающего: "или boost нельзя использовать?" это два. я просто высказал мнение о том как бы это сделал я: "если критична производительность - я бы" это три. я абсолютно забыл что это раздел новичков все. ушел на "свое место" Добавлено @ 22:07 и тем не менее, на вопрос я ответил кодом уровня вопрошающего. Это сообщение отредактировал(а) boostcoder - 23.7.2011, 22:07 |
||||
|
|||||
| asmdzen |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 28.11.2010 Репутация: нет Всего: 5 |
цель написать real-time анализатор net трафика, с возможностью включения/отключения анализа определенных протоколов. По всем протоколам показывается статистика типа скорость передачи данных, количество переданных данных, количество неправильных checksum'ов. Поток нужно обработать до уровня приложения (HTTP, FTP, TORRENT, POP3). в интерфейсе должна быть возможность начать анализ из нескольких источников с разными параметрами (разные протоколы влючены/отключены) и возможностью изменения этих параметров во время работы. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
порядок и общее кол-во протоколов заранее определено ? |
|||
|
||||
| asmdzen |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 28.11.2010 Репутация: нет Всего: 5 |
да
Это сообщение отредактировал(а) asmdzen - 23.7.2011, 22:38 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
зачем тогда вообще регистрация ?
чем не устраивает самый простой вариант ? :
|
|||
|
||||
| asmdzen |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 28.11.2010 Репутация: нет Всего: 5 |
самый простой вариант у меня уже есть на С, хочу написать код так чтоб можно было потом легко добавлять новые протоколы. еще tcp.Analyze() вызываться должен из ip объекта, откуда этот объект будет знать про tcp объект, не буду же я прописывать его в классе ip, вот и наследовал их всех от базового класса. к тому же цепочка обработки протоколов заранее не известна, т.е. можно дойти от ip до http несколькими разными путями, которые определяются уже во время обработки путем проверки какому протоколу принадлежит этот пакет (по очереди). |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
можно в псевдографическом виде диаграмму цепочки ? кто за кем и как обрабатывает пакет..
|
|||
|
||||
| asmdzen |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 28.11.2010 Репутация: нет Всего: 5 |
ip - tcp -
- udp - l2tp - ip - HTTP || FTP || POP3 - gre - ip - не знаю как это наглядней показать. суть в том что некоторые пакеты содержат в себе инкапсулированные ip пакеты и нужно вернуть управление ip обработчику. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 13 Всего: 110 |
диаграмма на граф похожа.
|
|||
|
||||
| xvr |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: нет Всего: 223 |
Тогда лучше сделать членов этой структуры mutable, это будет работать (и соответствовать стандарту). Но вот тому, кто будет смотреть такой код, придется долго и аргументированно объяснять, зачем это было сделано
Это можно сделать через интерфейсы, состоящие из гетеров и сетеров. Каждый интерфейс будет описывать набор данных для конкретного класса-клиента. Основной класс должен реализовать все эти интерфейсы (можно приватно)
|
||||||
|
|||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
ip на схеме это один и тот же объект или в каждой точке свой объект ? в задаче есть интересный момент, если передавать управление из одного анализатора в другой напрямую, то во первых будет никому ненужное заполнение стека, во вторых будет затруднительно добавление действия между анализаторами.. Добавлено через 1 минуту и 50 секунд к тому же не приносящей пользы для данной задачи |
|||
|
||||
| asmdzen |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 28.11.2010 Репутация: нет Всего: 5 |
один и тот-же, просто не знал как это показать. т.е. когда объект ip вызывает метод tcp напрямую? или я не догоняю? когда было все на С написано, я из анализатора ip знал конкретно кого вызывать следующим по номеру протокола в ip хидере, сейчас же я передаю управление каждому последующему анализатору по очереди, они сами смотрят ip хидер и решают их это пакет или нет. заполнение чем? это возврат к тому с чего начинал плюс наследственность )) лучше уж самому следить за изменением членов структур чем такой расход ресурсов, была бы проверка в compile-time, это бы все меняло. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
не напрямую это условно так : http://liveworkspace.org/code/4c9f662f58dc...5c334d65f5cb8a6 Добавлено @ 15:21 тогда после каждого анализа можно выполнять свои действия.. например вывод статистики.. Добавлено через 7 минут и 35 секунд с маршрутизацией вроде понятно, теперь возникает вопрос, что есть анализатор, т.е. что он должен уметь, кроме как модифицировать пакет ? Добавлено через 9 минут и 10 секунд иначе он больше, чем на функцию не тянет.. Это сообщение отредактировал(а) mes - 24.7.2011, 15:26 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |