2016-07-15 25 views
0

我正在使用Embarcadero RAD Studio 10.我试图在我的应用程序中使用Indy客户机/服务器组件。调整TCP/UDP服务器运行时间

我想在运行时调整TCP/UDP服务器的IP地址和端口。

我可以在设计时看到的默认设置:

default option

我可以添加条目到Bindings并设置DefaultPort

但是,我想在程序运行时执行此操作。我想在我的用户界面中设置绑定和端口,并按下按钮使服务器使用我输入的内容。

IP and port bar

我该怎么办呢?

回答

0

BindingsTIdSocketHandle对象的集合。在设计时向集合添加新条目与在运行时调用Bindings.Add()方法相同。

TIdSocketHandle具有IPPort特性。当创建TIdSocketHandle对象时,其Port被初始化为当前值DefaultPort

要做你在问什么,只需拨打Bindings.Add()并设置新对象的IPPort属性。例如:

德尔福:

procedure TMyForm.ConnectButtonClick(Sender: TObject); 
var 
    LIP: string; 
    LPort: TIdPort; 
    LBinding: TIdSocketHandle; 
begin 
    LIP := ServerIPEdit.Text; 
    LPort := IntToStr(ServerPortEdit.Text); 
    IdTCPServer1.Active := False; 
    IdTCPServer1.Bindings.Clear; 
    LBinding := IdTCPServer1.Bindings.Add; 
    LBinding.IP := LIP; 
    LBinding.Port := LPort; 
    IdTCPServer1.Active := True; 
end; 

C++:

void __fastcall TMyForm::ConnectButtonClick(TObject *Sender); 
{ 
    String LIP = ServerIPEdit->Text; 
    TIdPort LPort = IntToStr(ServerPortEdit->Text); 
    IdTCPServer1->Active = false; 
    IdTCPServer1->Bindings->Clear(); 
    TIdSocketHandle *LBinding = IdTCPServer1->Bindings->Add(); 
    LBinding->IP = LIP; 
    LBinding->Port = LPort; 
    IdTCPServer1->Active = true; 
} 

TIdUDPServer同样的事情。

+0

此代码是delphi,但我需要C++你可以用C++做到这一点? – ahmd14

+0

@Buraki在你的问题中有*没有*表示你正在使用C++ vs Delphi。下次请提供这些细节,它们很重要。 –

+0

我很抱歉,这是我的错,下次我会关心这件事。 – ahmd14