Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2008, 08:03   #11
Pochemuk
 
Регистрация: 04.04.2008
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Квэнди Посмотреть сообщение
Так в этом случае пакет, пришедший снаружи, сначала разнатится, потом попадет в твой фильтр, потом уже на сервер, как же он попадет минуя твой фильтр если цепочка прямолинейная?
Вот это как раз понятно (теоретически). А не понятно прохождение ответов от сервера удаленному клиенту. Получается, что на сервере придется прописывать статические маршруты через фильтр для всех задействованных внешних клиентов. Иначе ответ пойдет прямиком через шлюз по умолчанию и проанализирован фильтром не будет.
Pochemuk вне форума Ответить с цитированием
Старый 08.04.2008, 09:28   #12
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

А ты поставь свой фильтр шлюзом по умолчанию, и с него уже перенаправляй трафик на реальный шлюз
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 08.04.2008, 10:25   #13
Pochemuk
 
Регистрация: 04.04.2008
Сообщений: 8
По умолчанию

Ну это тогда через него пойдет весь исходящий трафик. В том числе исходящий почтовый, запросы пользователей по HTTP, DNS и пр. А это нужно?
Ну разве что поставить его по умолчанию не для всех, а только для данного сервера. Тогда можно.
С теорией уяснили. А вот практические вопросы только начались. Например, как при работе с низкоуровневыми сокетами организовать многопоточность. Т.е. для каждого входящего на фильтр коннекта необходимо создать свой поток обработки.
В Indy создание потоков осуществляется автоматически при каждом новом коннекте. А тут-то этим всем придется заниматься ручками.

Ну и еще ... А вообще-то при работе с низкоуровневыми сокетами понятие коннекта существует? Кажется нет ... Это же голые IP-пакеты. Блин! А раз нет коннектов, то нет и их разрывов. Как же тогда отслеживать, что клиент отключился, и уничтожать потоки обработки?
Pochemuk вне форума Ответить с цитированием
Старый 08.04.2008, 11:05   #14
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

ну с потоками это достаточно не сложно реализовать благо есть класс Thread
да, понятия так какого коннекта не будет, будет TCP сессия, по ней тольк ои моэно судить, анализировав TCP заголовки. Здесь общего решения нет, вам придется подстраиваться только уже по ситуации
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 08.04.2008, 11:36   #15
Pochemuk
 
Регистрация: 04.04.2008
Сообщений: 8
По умолчанию

Да уж ... Все не так просто, как на самом деле ...

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

Вобщем, пора самому брать тайм-аут для осмысления ситуации.

Спасибо, Квэнди, за правильно выбранное направление пинка ...

Последний раз редактировалось Pochemuk; 08.04.2008 в 11:40.
Pochemuk вне форума Ответить с цитированием
Старый 08.04.2008, 12:10   #16
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Ну а что же вы хотели, нетривильаная задача требует нетривиального решения )
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц