调整 TCP/UDP 服务器运行时

Adjust TCP/UDP Server Runtime

我正在使用 Embarcadero RAD Studio 10。我正在尝试在我的应用程序中使用 Indy client/server 组件。

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

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

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

但是,我想在程序运行时执行此操作 运行。我想在我的 UI 中设置绑定和端口,然后按下一个按钮让服务器使用我输入的内容。

我该怎么做?

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

TIdSocketHandle 具有 IPPort 属性。当一个 TIdSocketHandle 对象被创建时,它的 Port 被初始化为 DefaultPort.

的当前值

要执行您要求的操作,只需调用 Bindings.Add() 并设置新对象的 IPPort 属性。例如:

Delphi:

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 相同。