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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
а вот и низззя так тут... 30.09.03 23:13  Число просмотров: 1475
Автор: 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);
>

<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