| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Распределённые приложения и сеть > Перехват сетевого соединения [HTTP ч/з NDIS,proxy] |
| Автор: Softaz 7.5.2006, 14:26 | ||
| Пишу программку наподобие баннероезки. Надо каким-либо образом органищовать перехват соединения. Это легче всего сделать с помощью прокси-сервера. Хотя можно и через сетевой драйвер (но надо ли). Никак не могу добится устойчивой работы прокси. Пример взят отсюда: http://www.c-sharpcorner.com//internet/web_proxy.asp Немного переделан (изменил кодировку, в TcpListener определил локальный адрес и т.д.). В принципе проксюшка работает, но очень медленно. К тому же открывает не каждый сайт и не каждую страницу Есть ли в .NET какие-либо способы перехвата и что не так в проксюшке? Код приведен ниже. Заранее спасибо.
|
| Автор: vinegr 16.5.2006, 20:23 |
| исходный пример на редкость дебилен: - зачем-то ждет, пока в strRetPage накопится вся страница, вместо того, чтобы отдавать кусками по мере получения. - блокирующий Receive возвращает 0 как число принятых байт, фактически, по таймауту сокета - в данном примере этот таймаут ожидается на каждом запросе. - совершенно необязательно открывать/закрывать коннектшн для каждого запроса - в реальной жизни через открытое соединение проходит куча запросов к серверу (и, соответственно, ответов). Если делать по-простому, после установления коннекта с требуемым сервером нужно запустить две нити "навстречу друг-другу" - одна перекладывает байты с клиента(браузера) на сервер, другая - с сервера на клиент (если баннерорезка анализирует НТМЛ - тут то она и должна работать). - на каждый запрос создавать экземпляр класса-обработчика - уж больно жирно - надо бы сгородить какой-нить пул обработчиков и использовать их экземпляры повторно. В каждый момент времени браузер держит открытыми только два НТТР-соединения (если по стандарту) - т.е. пул обработчиков будет совсем небольшим и совсем просто управляемым. - режет глаза преобразование из байтов в строки и обратно и вообще стиль написания. я бы посоветовал поискать более продвинутый пример, этот дорабатывать себе дороже |