2015-06-07 1 views
-2

Я хочу написать простой прокси с TIdHTTPProxyServer и это мой код:работы с IdHTTPProxyServer1

void __fastcall TForm1::FormCreate(TObject *Sender) 
{ 
    IdHTTPProxyServer1->DefaultPort = 8090; 
    IdHTTPProxyServer1->Active = true; 
} 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) 
{ 
    int Index = 0; 
    TList * cList; 
    { 
     cList = IdHTTPProxyServer1->Contexts->LockList(); 
     try 
     { 
      for (int stop = cList->Count - 1, Index = 0; Index <= stop; Index++) 
      { 
       TIdContext * t; 
       t = static_cast <TIdContext*>(cList[Index]); 
       t->Connection->Disconnect(); 
      } 
     } 
     __finally 
     { 
      IdHTTPProxyServer1->Contexts->UnlockList(); 
     } 
     IdHTTPProxyServer1->Active = false; 
    } 
} 

У меня есть два вопроса:

  1. Как я могу бросить в TList к TIdContext?

  2. Этот код не меняет мой IP-адрес, и я хочу изменить свой IP-адрес. Как я могу изменить свой IP-адрес с помощью TIdHTTPProxyServer?

+2

Добро пожаловать в StackOverflow. Это сайт вопросов и ответов. Ваш вопрос слишком широк для ответа. Пожалуйста, будьте более конкретными. Что именно вы хотите делать с TIdHTTPServer? что ты уже испробовал? Что не работает для вас? –

+0

Спасибо за ваш ответ .... –

+0

Вы задали два отдельных вопроса. Они должны быть размещены отдельно. Пожалуйста, прочитайте правила StackOverflow, прежде чем задавать дополнительные вопросы. Я ответил на первый вопрос здесь относительно использования TList. Пожалуйста, разместите отдельный вопрос для второго вопроса о вашем использовании IP-адресов и более подробно объясните, что именно вы пытаетесь выполнить. –

ответ

0

Как я могу бросить TList к TIdContext?

У вас нет, поскольку они не относятся к классам. Реальная проблема заключается в том, что вы не получаете правильного доступа к объектам TList. Вы должны использовать TList::Items[] свойство вместо этого, либо непосредственно:

t = static_cast<TIdContext*>(cList->Items[Index]); 

или косвенно, разыменованием TList указатель, так что TList::operator[] (который использует Items[] свойство внутренне) может быть вызвана:

t = static_cast<TIdContext*>((*cList)[Index]); 

Либо этот код совершенно не нужен, так как Indy автоматически закрывает всех активных клиентов для вас, когда сервер деактивирован/уничтожен:

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) 
{ 
    IdHTTPProxyServer1->Active = false; 
} 

Этот код не меняет мой IP-адрес, и я хочу изменить свой IP-адрес. Как я могу изменить свой IP-адрес с помощью TIdHTTPProxyServer?

Вы не можете изменить IP-адрес локальной сети с помощью TIdHTTPProxyServer, то есть не предназначен для этого. Фактически, в Indy нет ничего, чтобы изменить IP-адрес локальной машины, который находится за пределами области Indy. Вместо этого вы должны использовать API-интерфейсы для платформы. Что вы пытаетесь выполнить точно? Пожалуйста, разместите отдельный вопрос по этой теме и объясните свои требования к ней.

+0

Спасибо за ваши ответы. –

+0

Ваши ответы решили мою проблему. мой второй вопрос был просто идеей. Я новичок в Indy и RAD Studio и просто хочу знать, что я могу изменить свой IP с помощью «TIdHTTPProxyServer» или нет, на который получил свой ответ. Большое спасибо. –

+0

Что заставило вас думать, что 'TIdHTTPProxyServer' может изменить ваш IP-адрес? –

 Смежные вопросы

  • Нет связанных вопросов^_^