Есть некий сайт, есть несколько страниц на нем, например:
Некий сайт\страница1
Некий сайт\страница2
Некий сайт\страница3
....
Некий сайт\страницаN
Вопрос, как за одно соединение отправить несколько запросов, получения текста этих страниц.
у меня пока получается только одну страницу проверить за одно соединение, при последующих запросах, ответа нет(..
вот мой пример:
function gotolink(s:array of string):boolean;
var
ASocket:TSocket;
LAddr: TSockAddrIn;
i:integer;
VPort:word;
VIP:word;
LHost:THostEnt;
FDSet:TFDSet;
Buffer:array[0..4999]of char;
Count:integer;
i2:integer;
begin
ASocket:=Socket(AF_INET, SOCK_STREAM, 0);
if(ASocket>0)then
begin
LAddr.sin_family := af_inet;
LAddr.sin_addr.s_addr := INADDR_ANY;
LAddr.sin_port:=htons(0);
if(Bind(ASocket, @LAddr, SizeOf(LAddr))=0)then
begin
i:=SizeOf(LAddr);
if(GetSockName(ASocket,PSockAddr(@LAddr),i)=0)then
begin
VPort:=Ntohs(TSockAddr(LAddr).sin_port);
if(VPort>0)then
begin
if(setsockopt(ASocket,IPPROTO_TCP, TCP_NODELAY, '', 4)=0)then
begin
LHost := GetHostByName('Сайт')^;
if(@LHost<>nil)then
begin
LAddr.sin_addr.S_un_b.s_b1 := Ord(Lhost.h_address_list^[0]);
LAddr.sin_addr.S_un_b.s_b2 := Ord(Lhost.h_address_list^[1]);
LAddr.sin_addr.S_un_b.s_b3 := Ord(Lhost.h_address_list^[2]);
LAddr.sin_addr.S_un_b.s_b4 := Ord(Lhost.h_address_list^[3]);
LAddr.sin_port := HToNS(80);
if(connect(ASocket,@LAddr, SizeOf(LAddr))=0)then
begin
i:=SizeOf(LAddr);
if(GetSockName(ASocket,PSockAddr(@LAddr),i)=0)then
begin
VPort:=Ntohs(TSockAddr(LAddr).sin_port);
if(Vport>0)then
begin
i:=SizeOf(LAddr);
if(getpeername(ASocket,@LAddr, i)=0)then
begin
VPort:=Ntohs(TSockAddr(LAddr).sin_port);
if(VPort>0)then
begin
for i:=1 to 8 do
sendbuff[i+5]:=s[0][i];
send(ASocket,sendbuff[1],118,0);
fillchar(FDSet,sizeof(FDSet),0);
FDSet.fd_array[0]:=ASocket;
FDSet.fd_count:=1;
select(0,@FDSet,nil,nil,nil);
FillChar(Buffer,5000,0);
Count:=recv(ASocket,Buffer[0],5000,0);
for i:=1 to 8 do
sendbuff[i+5]:=s[1][i];
send(ASocket,sendbuff[1],118,0);
fillchar(FDSet,sizeof(FDSet),0);
FDSet.fd_array[0]:=ASocket;
FDSet.fd_count:=1;
select(0,@FDSet,nil,nil,nil);
FillChar(Buffer,5000,0);
Count:=recv(ASocket,Buffer[0],5000,0);
.........................................
sendbuff:string='GET /******** HTTP/1.1'#13#10+
'Host: сайт'#13#10+
'Accept: text/html, */*'#13#10+
'Accept-Encoding: identity'#13#10+
'User-Agent: Mozilla/3.0'#13#10+
#13#10;
где символы в звездочках заменяются на ссылку.
помогите) подскажите где я не прав и как будет правильно?)
заранее благодарен