Модераторы: feodorv

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработка сетевого потока 
:(
    Опции темы
boostcoder
Дата 23.7.2011, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 13
Всего: 110



asmdzen, ты путаешь тем, что объясняешь задачу так, каким ты ее решение видишь. просто объясни цель/ТЗ.
PM WWW   Вверх
mes
Дата 23.7.2011, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(boostcoder @  23.7.2011,  20:47 Найти цитируемый пост)
или я чего-то не понимаю?... 

Цитата(boostcoder @  23.7.2011,  20:47 Найти цитируемый пост)
если использовать fusion::vector - то можно использовать статический полиморфизм + никакой итерации в рантайме + никаких виртуальных функций.

+ невозможность построения динамичной цепочки, а нам неизвестно можно ли от этого отказаться smile это раз
в теме для новичков призывать использовать сложные для понимания конструкции, когда они еще с простыми не разобрались - это два smile





--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 23.7.2011, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 13
Всего: 110



Цитата(mes @  23.7.2011,  22:00 Найти цитируемый пост)
невозможность построения динамичной цепочки, а нам неизвестно можно ли от этого отказаться

ну... я представил что протоколов не бесконечно много. это раз.

Цитата(mes @  23.7.2011,  22:00 Найти цитируемый пост)
в теме для новичков призывать использовать сложные для понимания конструкции, когда они еще с простыми не разобрались

я же поинтересовался у вопрошающего: "или boost нельзя использовать?" это два.
я просто высказал мнение о том как бы это сделал я: "если критична производительность - я бы" это три.
я абсолютно забыл что это раздел новичков smile и это четыре.

все. ушел на "свое место" smile

Добавлено @ 22:07
и тем не менее, на вопрос я ответил кодом уровня вопрошающего. smile 

Это сообщение отредактировал(а) boostcoder - 23.7.2011, 22:07
PM WWW   Вверх
asmdzen
Дата 23.7.2011, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 28.11.2010

Репутация: нет
Всего: 5



Цитата(boostcoder @  23.7.2011,  21:58 Найти цитируемый пост)
просто объясни цель

цель написать real-time анализатор net трафика, с возможностью включения/отключения анализа определенных протоколов. По всем протоколам показывается статистика типа скорость передачи данных, количество переданных данных, количество неправильных checksum'ов.
Поток нужно обработать до уровня приложения (HTTP, FTP, TORRENT, POP3).
в интерфейсе должна быть возможность начать анализ из нескольких источников с разными параметрами (разные протоколы влючены/отключены) и возможностью изменения этих параметров во время работы.
PM MAIL   Вверх
mes
Дата 23.7.2011, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(asmdzen @  23.7.2011,  21:16 Найти цитируемый пост)
включения/отключения анализа определенных протоколов. 

порядок и  общее кол-во протоколов заранее определено ?



--------------------
PM MAIL WWW   Вверх
asmdzen
Дата 23.7.2011, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 28.11.2010

Репутация: нет
Всего: 5



да


Это сообщение отредактировал(а) asmdzen - 23.7.2011, 22:38
PM MAIL   Вверх
mes
Дата 23.7.2011, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



зачем тогда вообще регистрация ? 
чем не устраивает самый простой вариант ? :
Код

class analyzer
{
  public:
    void analyze ()
   {
       _tcp.analyze();
       _udp.analyze();
   }

  private:
    tcp_analyzer   _tcp;
    udp_analyzer  _udp;
};




--------------------
PM MAIL WWW   Вверх
asmdzen
Дата 23.7.2011, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 28.11.2010

Репутация: нет
Всего: 5



Цитата(mes @  23.7.2011,  23:01 Найти цитируемый пост)
чем не устраивает самый простой вариант ?

самый простой вариант у меня уже есть на С, хочу написать код так чтоб можно было потом легко добавлять новые протоколы.
еще tcp.Analyze() вызываться должен из ip объекта, откуда этот объект будет знать про tcp объект, не буду же я прописывать его в классе ip, вот и наследовал их всех от базового класса. к тому же цепочка обработки протоколов заранее не известна, т.е. можно дойти от ip до http несколькими разными путями, которые определяются уже во время обработки путем проверки какому протоколу принадлежит этот пакет (по очереди).
PM MAIL   Вверх
mes
Дата 23.7.2011, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



можно в псевдографическом виде диаграмму цепочки ? кто за кем и как обрабатывает пакет.. 


--------------------
PM MAIL WWW   Вверх
asmdzen
Дата 24.7.2011, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 28.11.2010

Репутация: нет
Всего: 5



ip - tcp                   -
    - udp - l2tp - ip  - HTTP || FTP || POP3
    - gre - ip            - 

не знаю как это наглядней показать. суть в том что некоторые пакеты содержат в себе инкапсулированные ip пакеты и нужно вернуть управление ip обработчику.
PM MAIL   Вверх
boostcoder
Дата 24.7.2011, 01:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 13
Всего: 110



диаграмма на граф похожа.
PM WWW   Вверх
xvr
Дата 24.7.2011, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: нет
Всего: 223



Цитата(asmdzen @  23.7.2011,  17:33 Найти цитируемый пост)
mes, а будет ли правильно сделать члены этой структуры константными и для изменения делать const_cast?

Тогда лучше сделать членов этой структуры mutable, это будет работать (и соответствовать стандарту). Но вот тому, кто будет смотреть такой код, придется долго и аргументированно объяснять, зачем это было сделано  smile 


Цитата(asmdzen @  23.7.2011,  19:57 Найти цитируемый пост)
деальным было бы если разные члены структуры могли изменять только метод(ы) какого то класса

Это можно сделать через интерфейсы, состоящие из гетеров и сетеров. Каждый интерфейс будет описывать набор данных для конкретного класса-клиента. Основной класс должен реализовать все эти интерфейсы (можно приватно)
Код

struct IPInterface {
 virtual int get_saddr() =0;
 virtual void set_saddr(int) =0;
};

struct TCPInterface {
 virtual int get_sport() =0;
 virtual void set_sport(int) =0;
 virtual int get_dport() =0;
 virtual void set_dport(int) =0;
};

class CAnalyzator : private IPInterface, private TCPInterface {
 
 int get_saddr();
 void set_saddr(int);
 int get_sport();
 void set_sport(int);
 int get_dport();
 void set_dport(int);

public:
 CAnalyzator()
   {
    childAnalyzators.push_back(new IPAnalisator( (IPInterface*)this));
    childAnalyzators.push_back(new TCPAnalisator( (TCPInterface*)this));
    ...
   }
};

Недостатки - много писанины (хотя можно все прикрыть шаблонами и макросами), и run-time накладные расходы на динамический полиморфизм


PM MAIL   Вверх
mes
Дата 24.7.2011, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(asmdzen @  23.7.2011,  23:09 Найти цитируемый пост)
не знаю как это наглядней показать.

ip  на схеме это один и тот же объект или в каждой точке свой объект ?

в задаче есть интересный момент, если передавать управление из одного анализатора в другой напрямую, то во первых будет никому ненужное заполнение стека, во вторых будет затруднительно добавление действия между анализаторами..

Добавлено через 1 минуту и 50 секунд
Цитата(xvr @  24.7.2011,  09:55 Найти цитируемый пост)
Недостатки - много писанины

к тому же не приносящей пользы для данной задачи smile



--------------------
PM MAIL WWW   Вверх
asmdzen
Дата 24.7.2011, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 28.11.2010

Репутация: нет
Всего: 5



Цитата(mes @  24.7.2011,  14:29 Найти цитируемый пост)
ip  на схеме это один и тот же объект или в каждой точке свой объект ?

один и тот-же, просто не знал как это показать.

Цитата(mes @  24.7.2011,  14:29 Найти цитируемый пост)
если передавать управление из одного анализатора в другой напрямую

т.е. когда объект ip вызывает метод tcp напрямую? или я не догоняю?
когда было все на С написано, я из анализатора ip знал конкретно кого вызывать следующим по номеру протокола в ip хидере, сейчас же я передаю управление каждому последующему анализатору по очереди, они сами смотрят ip хидер и решают их это пакет или нет.


Цитата(mes @  24.7.2011,  14:29 Найти цитируемый пост)
никому ненужное заполнение стека

заполнение чем?

Цитата(xvr @  24.7.2011,  10:55 Найти цитируемый пост)
Это можно сделать через интерфейсы, состоящие из гетеров и сетеров

это возврат к тому с чего начинал плюс наследственность ))
лучше уж самому следить за изменением членов структур чем такой расход ресурсов, была бы проверка в compile-time, это бы все меняло.

PM MAIL   Вверх
mes
Дата 24.7.2011, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(asmdzen @  24.7.2011,  13:57 Найти цитируемый пост)
т.е. когда объект ip вызывает метод tcp напрямую? или я не догоняю?

не напрямую это условно  так : http://liveworkspace.org/code/4c9f662f58dc...5c334d65f5cb8a6

Добавлено @ 15:21
тогда после каждого анализа можно выполнять свои действия.. например вывод статистики..

Добавлено через 7 минут и 35 секунд
с маршрутизацией вроде понятно, теперь возникает вопрос, что есть анализатор, т.е. что он должен уметь, кроме как модифицировать пакет ?

Добавлено через 9 минут и 10 секунд
иначе он больше, чем на функцию не тянет.. 


Это сообщение отредактировал(а) mes - 24.7.2011, 15:26


--------------------
PM MAIL WWW   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.4995 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.