![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Доброе время суток.
Если вкратце: как узнать размер страницы сайта используя только вин апи. предыстория.. Сначала делал используя компонент TWebBrowser, но что логично, из - за графической части, которую никуда не выкинуть скорость выполнения задачи была очень маленькой 500-550 страниц в минуту, решил использовать компонент ЕIdHTTP, и get() скорость упала в раз 10, подозреваю что из за того что он заного на каждой ссылке проходил утентификацию, пытался выудить через него winapi но заблудился и окончательно запутался, прослеживая как бегает курсор отладчика.. пока получилась такая ересь: Код:
function gotolink(s:string):boolean;
var
ASocket:TSocket;
LAddr: TSockAddrIn; // 'http://ШАПКА.ru/ССЫЛКА' ССЫЛКА - переменная часть
i:integer;
VPort:word;
VIP:word;
LHost:THostEnt;
begin
ASocket:=idwinsock2.Socket(2,1,0);
LAddr.sin_port:=htons(0);
Bind(ASocket, @LAddr, SizeOf(LAddr));
i:=SizeOf(LAddr);
GetSockName(ASocket,PSockAddr(@LAddr),i);
VPort:=Ntohs(TSockAddr(LAddr).sin_port);
setsockopt(ASocket,6, 1, '', 4);
LHost := GetHostByName('ШАПКА.ru')^; //в оригинале сайт естественно другой
connect(ASocket,@LAddr, SizeOf(LAddr));
i:=SizeOf(LAddr);
getpeername(ASocket,@LAddr, i);
end;буду жадным, если спрошу готовый пример на winapi?) но подозреваю что такое добро вполне быть может) Последний раз редактировалось reqyz, 04.10.2014 в 20:01. |