
22.02.2009, 20:28
|
|
Banned
Регистрация: 06.01.2008
Сообщений: 904
С нами:
9655526
Репутация:
1821
|
|
Сообщение от eLWAux
реализация через сокети:
Код:
uses ...,WinSock, ..;
const host = 'www.google.com'; //хост
....
var sock : TSocket;
....
function create_packet(url:string):string;
begin
result := 'GET '+url+' HTTP/1.0' + #13#10 +
'Host: ' + Host + #13#10 +
'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)' + #13#10 +
'Accept: text/html' + #13#10 +
'Keep-Alive: 300'+ #13#10 +
'Referer: '+url+ #13#10 +
'Connection: keep-alive' + #13#10#13#10;
end;
function GET(packet: string): string;
var
wData : WSADATA;
addr : sockaddr_in;
sock : integer;
error : integer;
buf : array [0..1023] of Char;
str : string;
phe : PHostEnt;
begin
Result := '';
WSAStartup($0101, wData);
phe := gethostbyname(PChar(string(host)));
if phe = nil then begin
WSACleanup;
exit;
end;
sock := socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if sock = INVALID_SOCKET then begin
WSACleanup;
exit;
end;
addr.sin_family := AF_INET;
addr.sin_port := htons(80);
addr.sin_addr := PInAddr(phe.h_addr_list^)^;
error := connect(sock, addr, sizeof(addr));
if error = SOCKET_ERROR then begin
closesocket(sock);
WSACleanup;
exit;
end;
//str := 'GET '+url + ' HTTP/1.0'#13#10#13#10;
str:=packet;
send(sock, str[1], Length(str), 0);
ZeroMemory(@buf, 1024);
error := recv(sock, buf, 1024, 0);
while error > 0 do begin
Result := Result + Copy(buf, 0, error);
error := recv(sock, buf, 1024, 0);
end;
closesocket(sock);
WSACleanup;
if Result <> '' then Result:=Copy(Result, pos(#13#10#13#10, Result)+4,Length(Result));
end;
var answ : string;
answ := get( create_packet('http://www.google.com/') );
сохранение в файл:
Код:
AssignFile(myFile, 'file.txt');
ReWrite(myFile);
WriteLn(myFile, answ);
CloseFile(myFile);
ну и прочитать в listbox стандартно:
Код:
listbox1.items.loadfromfile('file.txt');
Ну да да да, что бы получить ОДНУ СТРАНИЦУ, мы используем сокеты... показуха какая то...
Получаем страницу с помощью TidHTTP и парсим регуляркой...
Пользоваться сокетами нужно там где они действительно нужны...
|
|
|