Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2014, 17:16   #1
Biohazard
Пользователь
 
Регистрация: 23.02.2009
Сообщений: 78
Вопрос winsock http несколько запросов за один коннект

Есть некий сайт, есть несколько страниц на нем, например:
Некий сайт\страница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);//V
 if(ASocket>0)then
 begin
   LAddr.sin_family := af_inet;
   LAddr.sin_addr.s_addr := INADDR_ANY;
   LAddr.sin_port:=htons(0);//V
   if(Bind(ASocket, @LAddr, SizeOf(LAddr))=0)then//V
   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;

где символы в звездочках заменяются на ссылку.
Biohazard вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WinSock, Не могу разорвать коннект! lollollollol Win Api 16 02.05.2014 21:13
Winsock и http Armatus Win Api 10 06.04.2011 01:25
Winsock http-запросы SmartCream Работа с сетью в Delphi 5 14.03.2011 15:34
Отправка HTTP-запросов MagTux Помощь студентам 1 01.02.2010 14:58
Как обработать не валидный коннект?(delphi,winsock) zotox Работа с сетью в Delphi 1 02.08.2009 19:46