Сокеты: Прокси
От: gis Украина  
Дата: 08.08.02 12:37
Оценка:
Привет все!

Я написал свой прокси, вот только, судя по всему не учел какую-та мелкую деталь. Дело в том что некоторые сайты грузятся через него корректно, а некоторые — нет. Принцып — пустяк: подставил в браузере свой прокси. А далее что принял прокси, то и отдал клиенту без изменения. Я в сокетах почти новичок, может кто-то мне сможет помочь? Заранее огромное спасибо
Очень прошу, посмотрите упрощеный код этого прокси. Вот его основная ф-ия:


   CSocket sockRecv;
   sockRecv.Attach(((MT_PARAM*)param)->sock);

   for (;;)
   {
      int nBufLen = sockRecv.Receive(buf,nMaxBufLen);
      /*    ....
            Cutting from HTTP header "Proxy-Connection" field    
      */

      CSocket sockClient;
      sockClient.Create();
      int nParam = 60000;
      sockClient.SetSockOpt(SO_RCVTIMEO,(char*)&nParam,sizeof(nParam));
      sockClient.SetSockOpt(SO_SNDTIMEO,(char*)&nParam,sizeof(nParam));
      sockRecv.SetSockOpt(SO_RCVTIMEO,(char*)&nParam,sizeof(nParam));
      sockRecv.SetSockOpt(SO_SNDTIMEO,(char*)&nParam,sizeof(nParam));

      /*    ....
            Define from HTTP header host name -> strHost
      */

      if (!sockClient.Connect(strHost,nPort))
         break;

      int nSent = sockClient.Send(strSend,nBufLen);
      if (nSent != nBufLen)
         break;

      for (;;)
      {
         nBufLen = sockClient.Receive(buf,nMaxBufLen);
         
  //  I comment it.     pthread->MakeSomeChanges(nBufLen,buf);

         if (nBufLen <= 0) break;

         int nSent = sockRecv.Send(buf,nBufLen);
         if (nSent != nBufLen)
            break;

      }
      sockClient.Close();
      sockRecv.Close();
      break;
   }
best regards, Ivan
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.