информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыЗа кого нас держат?Портрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Да не вопрос... начиная от tnmhttp и tidhttp и заканчивая апи (msdn-internetopen и далее) 28.09.03 00:41  Число просмотров: 1861
Автор: Killer{R} <Dmitry> Статус: Elderman
Отредактировано 28.09.03 01:33  Количество правок: 1
<"чистая" ссылка>
<programming>
[C++] Builder и HTTP... 28.09.03 00:16   [Ktirf]
Автор: CrazyPitbull Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Работая в VC с HTTP я пользовал класс CInternetSession - очень удобнаый класс, прост в ображении и неприхотлив :). Теперь програмка пишется на Билдере. Покапавшись в его стандартных компанентах я не нашёл ничего похожего, может плохо искал. Если кто работал с НТТР протоколом на Билдере поделитесь опытом. Как работать с пересылкой файлов по НТТР протоколу?
Спасибо.
[C++] Builder и HTTP... 28.09.03 11:37  
Автор: ynblpb Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Работая в VC с HTTP я пользовал класс CInternetSession -
> очень удобнаый класс, прост в ображении и неприхотлив :).
> Теперь програмка пишется на Билдере. Покапавшись в его
> стандартных компанентах я не нашёл ничего похожего, может
> плохо искал. Если кто работал с НТТР протоколом на Билдере
> поделитесь опытом. Как работать с пересылкой файлов по НТТР
> протоколу?
> Спасибо.

А не пробовал юзать WINAPI SOCKET send recv и т п? В принципе в MSDN довольно хорошо описано.
Да не вопрос... начиная от tnmhttp и tidhttp и заканчивая апи (msdn-internetopen и далее) 28.09.03 00:41  
Автор: Killer{R} <Dmitry> Статус: Elderman
Отредактировано 28.09.03 01:33  Количество правок: 1
<"чистая" ссылка>
Tnmhttp 29.09.03 16:56  
Автор: CrazyPitbull Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Создаю TNMHTTP* ht,
ht->host = "microsoft.com"
ht->Port = 80;
ht->Connect();
AnsiString str = "";
str = ht->Read(100);
Смотрю, что в str, а там пусто!!!! Может, что ни так делаю?(я НЕ из под прокси сижу!)
Tnmhttp 30.09.03 02:59  
Автор: Killer{R} <Dmitry> Статус: Elderman
Отредактировано 30.09.03 03:14  Количество правок: 2
<"чистая" ссылка>
> Создаю TNMHTTP* ht,
> ht->host = "microsoft.com"
> ht->Port = 80;
> ht->Connect();
> AnsiString str = "";
> str = ht->Read(100);
> Смотрю, что в str, а там пусто!!!! Может, что ни так
> делаю?(я НЕ из под прокси сижу!)
делай так
Создаю TNMHTTP* ht,
// А создаешь ты его так - TNMHTTP* ht=new TNMHTTP()? Кстати самому создавать совсем необязательно - можно при дизайне кинуть на форму этот компонент он лежит на палитре на закладке FastNet
ht->Get("http://microsoft.com");
Вешаем обработчик на OnSuccess и в нем делаем следующее
if(Cmd==CmdGET)
{
AnsiString xxx=ht->Body;
//все... радуемся жизни.
//никаких Connect И тп - это все делается автоматом при Get
//TNMHTTP не умеет выполнять несколько команд за раз. Я это лечил выстраиванием команд в очередь и последовательным испольнением иначе вылетает с исключением AlreadyConnected
}
Tnmhttp 29.09.03 16:58  
Автор: whiletrue <Роман> Статус: Elderman
<"чистая" ссылка>
> Создаю TNMHTTP* ht,

а здесь никакого new не надо?

> ht->host = "microsoft.com"
> ht->Port = 80;
> ht->Connect();
> AnsiString str = "";
> str = ht->Read(100);
> Смотрю, что в str, а там пусто!!!! Может, что ни так
> делаю?(я НЕ из под прокси сижу!)
Tnmhttp 29.09.03 19:48  
Автор: CrazyPitbull Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > Создаю TNMHTTP* ht,
>
> а здесь никакого new не надо?
>
> > ht->host = "microsoft.com"
> > ht->Port = 80;
> > ht->Connect();
> > AnsiString str = "";
> > str = ht->Read(100);
> > Смотрю, что в str, а там пусто!!!! Может, что ни так
> > делаю?(я НЕ из под прокси сижу!)
Это же компонент билдера, сколько с ним(билдерам) работаю он всегда работал без выделения памяти!
Tnmhttp 30.09.03 03:01  
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
> > > делаю?(я НЕ из под прокси сижу!)
> Это же компонент билдера, сколько с ним(билдерам) работаю
> он всегда работал без выделения памяти!
это если компоненты кидать на форму то ниче не надо выделять т.кю все выделяется ри этом при создании окна. А можно и лучше (быстрее работает) создавать в рантайме динамически через new.
Tnmhttp 29.09.03 20:08  
Автор: Ktirf <Æ Rusakov> Статус: Elderman
Отредактировано 29.09.03 20:11  Количество правок: 1
<"чистая" ссылка>
> > > Создаю TNMHTTP* ht,
> >
> > а здесь никакого new не надо?
> >
> Это же компонент билдера, сколько с ним(билдерам) работаю
> он всегда работал без выделения памяти!
Это не компонент билдера, это указатель на него. Чудес не бывает, ищи то, что тебе создаст сам объект либо создавай сам.
Tnmhttp 30.09.03 01:06  
Автор: CrazyPitbull Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > > > Создаю TNMHTTP* ht,
> > >
> > > а здесь никакого new не надо?
> > >
> > Это же компонент билдера, сколько с ним(билдерам)
> работаю
> > он всегда работал без выделения памяти!
> Это не компонент билдера, это
> указатель на него. Чудес не бывает, ищи
> то, что тебе создаст сам объект либо создавай сам.
Пусть даже и так, проблема не в том, что нет коннекто, он как раз есть, проблемма в том, что данные не читаются! ХОТЬ это И НЕ компонент, а указатель на него.
Tnmhttp 30.09.03 15:02  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> > Это не компонент билдера, это
> > указатель на него. Чудес не бывает,
> ищи
> > то, что тебе создаст сам объект либо создавай сам.
> Пусть даже и так, проблема не в том, что нет коннекто, он
> как раз есть, проблемма в том, что данные не читаются! ХОТЬ
> это И НЕ компонент, а указатель на него.
Все правильно тебе говорят. Ты создаешь объект <указатель> - он создается и инициализируется чем то там своим (нулем этого типа, но не обязательно).

Если не хочешь кидать на форму - то дался тебе этот указатель. Делай объект локальным, глобальным, статическим - каким угодно и обращайся непосредственно к полям (оператор точка, а не стрелка). В этом случае реализация должна сама проследить, чтобы память под объект выделилась, а сам объект проинициализировался, а при выходе из области видимости - очистился:

TNMHTTP ht;
ht.host = "microsoft.com" ;
ht.Port = 80;
ht.Connect();
AnsiString str = "";
str = ht.Read(100);
а вот и низззя так тут... 30.09.03 23:13  
Автор: Killer{R} <Dmitry> Статус: Elderman
Отредактировано 30.09.03 23:23  Количество правок: 1
<"чистая" ссылка>
> TNMHTTP ht;
^^^^^^^вот тут билдер при компиляции выругается и скажет что VCL classes must be созданы с помощью оператора new. Не может он иначе. Совсем не может Ж).
> ht.host = "microsoft.com" ;
> ht.Port = 80;
> ht.Connect();
> AnsiString str = "";
> str = ht.Read(100);
>

Не знал. Бильдером не пользуюсь :-) 01.10.03 15:01  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> > TNMHTTP ht;
> ^^^^^^^вот тут билдер при компиляции выругается и скажет
> что VCL classes must be созданы с помощью оператора new. Не
> может он иначе. Совсем не может Ж).
Странный он. Ну какая ему разница где выделять память.
Разница есть. 01.10.03 15:08  
Автор: Ktirf <Æ Rusakov> Статус: Elderman
<"чистая" ссылка>
> Странный он. Ну какая ему разница где выделять память.
Клонироваться, например, можно только в динамическую память. Десериализоваться в автоматическую/статическую память тоже натужно. В чем-то его понять можно.
Да нечем у тебя читать данные! 30.09.03 14:15  
Автор: Ktirf <Æ Rusakov> Статус: Elderman
<"чистая" ссылка>
> Пусть даже и так, проблема не в том, что нет коннекто, он
> как раз есть, проблемма в том, что данные не читаются! ХОТЬ
> это И НЕ компонент, а указатель на него.
Правильно, и не будут читаться. И коннекта у тебя нет (с чего ты взял, что есть?)
Указатель - это просто адрес в памяти, и если ты по этому адресу не создашь объект перед разыменованием указателя, последствия могут быть самые разные - от игнорирования твоих действий то выпадания программы в общую ошибку защиты. Запись some_class *obj; всего лишь объявляет указатель, который указывает куда угодно и уж скорее всего не на нужный тебе объект, который ты все равно не создал (и никто за тебя тоже не создал).

Короче, если не хочется вникать в программирование на C++, можешь последовать совету Killer'а и добавить соответствующий компонент на форму. Заодно и удалять этот объект не понадобится. Но вообще подобная работа с объектами - это уже Delphi, а не C++.
Да нечем у тебя читать данные! 30.09.03 15:44  
Автор: CrazyPitbull Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Правильно, и не будут читаться. И коннекта у тебя нет (с
> чего ты взял, что есть?)
> Указатель - это просто адрес в памяти, и если ты по этому
> адресу не создашь объект перед разыменованием указателя,
> последствия могут быть самые разные - от игнорирования
> твоих действий то выпадания программы в общую ошибку
> защиты. Запись some_class *obj;
> всего лишь объявляет указатель, который указывает куда
> угодно и уж скорее всего не на нужный тебе объект, который
> ты все равно не создал (и никто за тебя тоже не создал).
>
> Короче, если не хочется вникать в программирование на C++,
> можешь последовать совету Killer'а и добавить
> соответствующий компонент на форму. Заодно и удалять этот
> объект не понадобится. Но вообще подобная работа с
> объектами - это уже Delphi, а не C++.

С чето ты взял, что нет коннекта? http->Conrcted - тип BOOL. Не веришь, проверь... Кенект подтверждается! Память выделять под указатель пробовал, выдаёт ошибку.
P.S: На С++ пишу уже 3 года!
еще раз повторяю - юзай метод tnmhttp::get() 30.09.03 23:18  
Автор: Killer{R} <Dmitry> Статус: Elderman
Отредактировано 30.09.03 23:32  Количество правок: 3
<"чистая" ссылка>
потому что ::connect и ::read это унаследованные от TPowersock и никакого отношения к HTTP они не имеют. connect подключаеьтся к порту 80 и больше ниче не делает а read просто читает raw данные по tcp протоколу есдли такие имеются в сокете естественно не отсылая никаких HTTP запросов - TPowersock ниче не знает про HTTP. Юзай только те методы которые относятся непосредственно к TNMHTTP - Get и Post. Работают они асинхронно с твоей прогой потому результаты команд обрабатывай в событиях. И конектсятся к серверу сами.
Так. Давайте по шагам. 30.09.03 16:12  
Автор: Ktirf <Æ Rusakov> Статус: Elderman
<"чистая" ссылка>
> С чето ты взял, что нет коннекта? http->Conrcted - тип
> BOOL. Не веришь, проверь... Кенект подтверждается! Память
> выделять под указатель пробовал, выдаёт ошибку.
Пересмотрел весь тред и не нашел кода, который создает объект. Будь добр, вместо "Создаю TNMHTTP *ht;" напиши, как именно ты его создаешь.

> P.S: На С++ пишу уже 3 года!
Я десять, ничего? Дело не в этом :)
Чудес не бывает, если есть указатель на объект, значит этот объект где-то должен быть создан, будь-то конструктор формы или запись new TNMHTTP;. Если конструктор формы - компонент должен быть добавлен к форме. Прошу не обижаться, я честно хочу помочь.
Да нечем у тебя читать данные! 30.09.03 15:56  
Автор: whiletrue <Роман> Статус: Elderman
<"чистая" ссылка>
> Память выделять под указатель пробовал, выдаёт ошибку.
> P.S: На С++ пишу уже 3 года!

А если просто объект создать (не указатель + new), как amirul говорил - Тоже ошибку выдает?

Наверное, тогда он у тебя все-таки лежит на форме...
Большое спасибо всем, кто откликнулся, ососбенно Killer{R}'y... 01.10.03 14:12  
Автор: CrazyPitbull Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Хочу сказать всем большое спасибо, проблемма оказалась не в том, что я работаю с указателем, здесь всё корректно конектится, как правильно указал Killer{R} конект происходит по TCP. Удобный метод TNMHTTP::Get(AnsiString Url), решил все проблеммы, без проблемм читает данные. Ещё раз всем спасибо, в особенности Killer{R}'y.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach