Форум: "Сети";
Текущий архив: 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