Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2002.03.04;
Скачать: [xml.tar.bz2];

Вниз

http   Найти похожие ветки 

 
ev   (2001-12-07 20:20) [0]

Мастера подскажите .... как послать HTTP запрос и получить ответ (массив байт) не используя стандартные компоненты Delphi, а напрямую (через сокеты).

Можно даже в исходниках ;)


 
$hade   (2001-12-10 11:19) [1]

создаешь сокет...цепляешся куда надо...далее создаешь HTTP запрос (для етого читаешь доку по НТТР :-) и отправляешь...все просто....:-)))
а чем не нравица компоненты? ) тот же TIdTCPClient ни чем сильно и не отличается от сокетов...даже более -ет оно и есть :-)
!! Причем!! В нем есть ф-ия SendHeader( вроде бы ) - она как раз и сделана для отправки НТТР запроса...заполняешь StringList :
GET www.porno.ru/ASS.jpg /HTTP 1.1 (правильнось не гарантирую - не помню)
HOST=www.porno.ru
^^ именно "="
Accept=бла-бла...

...и так далее...потом SendHeader(твой StringList)...и все...
далее читай все что приходить и анализируй это...


 
ev   (2001-12-10 16:47) [2]

Все дело в том, что в компонентах Indy глюки
- утечка памяти
- невозможжность работы постоянно (круглосуточно)

ЗЫ. если можно - примерчик ;)

2 $hade: где StringList заполнять?


 
nikkie   (2001-12-10 19:45) [3]

>ev
по поводу indy
- какая версия?
- как проверяешь утечку?
- сделай тестовую программку, на которой проявляется утечка, и весь код - сюда

у меня indy 8.00.23, NT+SP5, смотрел TaskManager"ом и с помощью GetHeapStatus - никакой утечки не вижу (запускал IdHTTP.Get в цикле 100 раз)


 
$hade   (2001-12-11 07:29) [4]

по поводу утечки.... я писал что-то вроде прокси...точнее TCP Mapping для халявного инета...ща она нелегально стоит на серваке у нас и дает мне инет в обход нашего WinGate"а...(а то 20 метров в месяц маловато :-) Дык вот...серват ессесьно не выключается...и вот уже 2 недели и никуда не утекла память... :)

var
Request:TStringList;
begin
Request:=TStringList.Create;
Request.Add("GET http://www.ya.ru HTTP/1.1")
Request.Add("Host=www.ya.ru");
...и так далее....
IdTCPClient.SendHeader(Request);
...все...вроде так... :-)


 
ev   (2001-12-11 19:57) [5]

2 $hade: спасибо, попробую...

Хочется окончательно разобраться с Indy (или с руками ;) ).

var
http: TIdHTTP;
x: string;
a: byte;
....
a:=0;
while a<>1 do begin
http:=TidHTTP.Create(nil);
x:=http.Get(" http://192.168.77.23/cgi/data.cgi?param=1");
http.Free;
end;
...

Память выделяемая для программы постоянно увеличивается.
Да, для полноты можно сказать, что в x записывается около 25-35 КБайт!!!


 
panov   (2001-12-11 20:57) [6]

А если во время x:=http.Get(" http://192.168.77.23/cgi/data.cgi?param=1");
ошибка произойдет?
Выполнится тогда код
http.Free;
?


 
ev   (2001-12-13 02:41) [7]

да. на самом деле там try...


 
nikkie   (2001-12-13 12:23) [8]

>ev
ну как тебе можно тебе советовать, когда ты на вопросы не отвечаешь?
какая версия инди - не сказал. код привел, но неполный. по твоему коду panov сказал - удивительно, если в нем утечки не возникнет. вот ты говоришь "там try стоит". а где "там"? снаружи цикла?

если хочешь разобраться - напиши маленькое консольное приложение (раз уж ты динамически компоненту создаешь), проверь, что утечка по-прежнему есть и ВЕСЬ код - сюда.

вот только мне еще непонятно, зачем постоянно компоненту создавать/разрушать? не проще создать ее при старте приложения и разрушить в конце?


 
ev   (2001-12-13 18:46) [9]

ok. Вот полный текст.

var
http: TIdHTTP;
x: string;
a: byte;
begin
a:=0;
while a<>1 do begin
try
http:=TidHTTP.Create(nil);
x:=http.Get(" http://192.168.77.23/cgi/data.cgi?param=1");
http.Free;
except
http.Free;
end;
end;
end;


 
ev   (2001-12-13 19:09) [10]

Даже если не создавать TidHTTP динамически - результат тот-же.

var
x: string;
a: byte;
begin
a:=0;
while a<>1 do x:=http.Get(" http://192.168.77.23/cgi/data.cgi?param=1");
end;

Т.е. я думаю, что глюк может быть в 2-х местах
1. компонента Indy
2. присваивание переменной x большой строки (около 30 КБайт)

Как с этим бороться ?!?!?!


 
ev   (2001-12-15 15:32) [11]

Разобрался !!!!!!!!!!!!!!!!!!!!!
Глюк не в Indy ! - только сильно меня не бейте ;)

Глюк в Delphi 6. Скачал Borland Delphi 6 Update Fix - утечки нет !!!!


 
nikkie   (2001-12-17 15:41) [12]


приятная новость :)))



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2002.03.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
1-9131
Димка777
2002-02-17 01:08
2002.03.04
Посоветуйте TreeView, у которого бы TreeNode содержали какой-то control (edit, button...)


1-9243
Октябрь
2002-02-15 20:47
2002.03.04
Extended и String?????


1-9149
Squall
2002-02-17 22:56
2002.03.04
Скорость Progress Bar a!!!


1-9236
Alex L.
2002-02-15 17:39
2002.03.04
Объединение компонентов


1-9106
Galy
2002-02-15 11:21
2002.03.04
Я заглючила основательно





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский