14.01.2009, 19:55
|
Прохожий
|
|
Регистрация: 22.11.2008
Сообщения: 4
Репутация: 10
|
|
Использование прокси в WinSock
Код:
{$APPTYPE CONSOLE}
uses
Windows, SysUtils, WinSock;
var
WSA: TWSAData;
Sock: TSocket;
Server: TSockAddr;
function LookupName(host: string): TInAddr;
var
HostEnt: PHostEnt;
InAddr: TInAddr;
begin
HostEnt := gethostbyname(PChar(host));
FillChar(InAddr, SizeOf(InAddr), 0);
if HostEnt <> nil then
begin
with InAddr, HostEnt^ do
begin
S_un_b.s_b1 := h_addr^[0];
S_un_b.s_b2 := h_addr^[1];
S_un_b.s_b3 := h_addr^[2];
S_un_b.s_b4 := h_addr^[3];
end;
end;
Result := InAddr;
end;
procedure SendString(s: string);
var
Buffer: array[0..255] of char;
begin
StrPCopy(Buffer, s);
Send(Sock, Buffer, length(s), 0);
end;
var
Buffer: array[0..255] of char;
Bufflen, Recved: SmallInt;
begin
WSAStartup(MAKEWORD(1,0), WSA);
Sock := socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
ZeroMemory(@Server,SizeOf(Server));
Server.sin_family:=AF_INET;
Server.sin_port:=htons(80);
Server.sin_addr:=LookupName('www.lol.ru');
if Connect(Sock, Server, SizeOf(Server)) = 0 then
begin
SendString('GET / HTTP/1.1'#13#10);
SendString('Host: www.lol.ru'#13#10);
SendString('Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'#13#10);
SendString('Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3'#13#10);
SendString('Accept-Encoding: gzip,deflate'#13#10);
SendString('Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7'#13#10);
SendString(#13#10);
end;
repeat
Bufflen := SizeOf(Buffer);
Recved := Recv(Sock, Buffer, Bufflen, 0);
write(Buffer);
until Recved = 0;
CloseSocket(Sock);
WSACleanup;
readln;
end.
Вот код GET запроса на сайт через WinSock, объясните пожалуйста как в данном коде сделать поддержку прокси???
|