|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.04.2008, 08:03 | #11 |
Регистрация: 04.04.2008
Сообщений: 8
|
Вот это как раз понятно (теоретически). А не понятно прохождение ответов от сервера удаленному клиенту. Получается, что на сервере придется прописывать статические маршруты через фильтр для всех задействованных внешних клиентов. Иначе ответ пойдет прямиком через шлюз по умолчанию и проанализирован фильтром не будет.
|
08.04.2008, 09:28 | #12 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
А ты поставь свой фильтр шлюзом по умолчанию, и с него уже перенаправляй трафик на реальный шлюз
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
08.04.2008, 10:25 | #13 |
Регистрация: 04.04.2008
Сообщений: 8
|
Ну это тогда через него пойдет весь исходящий трафик. В том числе исходящий почтовый, запросы пользователей по HTTP, DNS и пр. А это нужно?
Ну разве что поставить его по умолчанию не для всех, а только для данного сервера. Тогда можно. С теорией уяснили. А вот практические вопросы только начались. Например, как при работе с низкоуровневыми сокетами организовать многопоточность. Т.е. для каждого входящего на фильтр коннекта необходимо создать свой поток обработки. В Indy создание потоков осуществляется автоматически при каждом новом коннекте. А тут-то этим всем придется заниматься ручками. Ну и еще ... А вообще-то при работе с низкоуровневыми сокетами понятие коннекта существует? Кажется нет ... Это же голые IP-пакеты. Блин! А раз нет коннектов, то нет и их разрывов. Как же тогда отслеживать, что клиент отключился, и уничтожать потоки обработки? |
08.04.2008, 11:05 | #14 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
ну с потоками это достаточно не сложно реализовать благо есть класс Thread
да, понятия так какого коннекта не будет, будет TCP сессия, по ней тольк ои моэно судить, анализировав TCP заголовки. Здесь общего решения нет, вам придется подстраиваться только уже по ситуации
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
08.04.2008, 11:36 | #15 |
Регистрация: 04.04.2008
Сообщений: 8
|
Да уж ... Все не так просто, как на самом деле ...
Это нужно анализировать все входящие пакеты, проверять, нужна ли их перманентная обработка. Если нужна, то искать, нет ли уже запущенного потока для этой сессии. Если нет, то создать его. Передать пакет в поток на обработку. Проанализировать результат обработки и принять меры. Кроме того, отдельный поток проверяет все запущенные потоки обработки пакетов на предмет тайм-аута. И если потоку обработки ничего долго не передавалось, то уничтожать его. Вобщем, пора самому брать тайм-аут для осмысления ситуации. Спасибо, Квэнди, за правильно выбранное направление пинка ... Последний раз редактировалось Pochemuk; 08.04.2008 в 11:40. |
08.04.2008, 12:10 | #16 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
Ну а что же вы хотели, нетривильаная задача требует нетривиального решения )
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |