使用 IdHTTPProxyServer1
working with IdHTTPProxyServer1
我想用 TIdHTTPProxyServer
编写一个简单的代理,这是我的代码:
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;
}
}
我有两个问题:
如何将 TList 转换为 TIdContext?
此代码不会更改我的 IP,我想更改我的 IP。如何使用 TIdHTTPProxyServer
更改我的 IP?
How can I cast a TList to a TIdContext?
你不知道,因为它们没有关系 类。真正的问题是您一开始就没有正确访问 TList
项。您需要直接使用 TList::Items[]
属性:
t = static_cast<TIdContext*>(cList->Items[Index]);
或者间接地,通过取消引用 TList
指针,以便可以调用 TList::operator[]
(在内部使用 Items[]
属性):
t = static_cast<TIdContext*>((*cList)[Index]);
无论如何,这段代码是完全没有必要的,因为 Indy 会在服务器 deactivated/destroyed:
时自动为您关闭所有活动的客户端
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
IdHTTPProxyServer1->Active = false;
}
This code doesn't change my IP and I want to change my IP. How can I change my IP with TIdHTTPProxyServer ?
您不能使用 TIdHTTPProxyServer
更改本地机器的 IP,那不是它的本意。事实上,在 Indy 中没有任何东西可以改变本地机器的 IP,那是在 Indy 的范围之外。您必须为此使用特定于平台的 API。你到底想完成什么?请 post 关于此主题的单独问题,并解释您对此的要求。
我想用 TIdHTTPProxyServer
编写一个简单的代理,这是我的代码:
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;
}
}
我有两个问题:
如何将 TList 转换为 TIdContext?
此代码不会更改我的 IP,我想更改我的 IP。如何使用
TIdHTTPProxyServer
更改我的 IP?
How can I cast a TList to a TIdContext?
你不知道,因为它们没有关系 类。真正的问题是您一开始就没有正确访问 TList
项。您需要直接使用 TList::Items[]
属性:
t = static_cast<TIdContext*>(cList->Items[Index]);
或者间接地,通过取消引用 TList
指针,以便可以调用 TList::operator[]
(在内部使用 Items[]
属性):
t = static_cast<TIdContext*>((*cList)[Index]);
无论如何,这段代码是完全没有必要的,因为 Indy 会在服务器 deactivated/destroyed:
时自动为您关闭所有活动的客户端void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
IdHTTPProxyServer1->Active = false;
}
This code doesn't change my IP and I want to change my IP. How can I change my IP with TIdHTTPProxyServer ?
您不能使用 TIdHTTPProxyServer
更改本地机器的 IP,那不是它的本意。事实上,在 Indy 中没有任何东西可以改变本地机器的 IP,那是在 Indy 的范围之外。您必须为此使用特定于平台的 API。你到底想完成什么?请 post 关于此主题的单独问题,并解释您对此的要求。