2016-07-15 5 views
0

私はEmbarcadero RAD Studio 10を使用しています。アプリケーションでIndyクライアント/サーバーコンポーネントを使用しようとしています。TCP/UDPサーバーランタイムを調整する

実行時にTCP/UDPサーバーのIPアドレスとポートを調整します。

私は、設計時にデフォルト設定を見ることができます:

default option

私はBindingsにエントリを追加し、DefaultPortを設定することができます。

しかし、私はプログラムが実行されている間にこれを行いたいと思います。 UIのバインディングとポートを設定し、ボタンを押してサーバーが入力したものを使用するようにします。

IP and port bar

私はこれをどのように行うのですか?

答えて

0

Bindingsは、TIdSocketHandleオブジェクトのコレクションです。設計時にコレクションに新しいエントリを追加することは、実行時にBindings.Add()メソッドを呼び出すのと同じです。

TIdSocketHandleは、IPおよびPortの特性を有する。 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++:TIdUDPServer

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; 
} 

同じこと。

+0

このコードはdelphiですが、私はC++が必要です。C++でこれを行うことはできますか? – ahmd14

+0

@Burakiあなたの質問にはC++とDelphiを使用しているということは何もありません。次回は、そのような詳細を提供してください、彼らは重要です。 –

+0

私のせいで申し訳ありませんが、次回はこれについて慎重に考えていきます。 – ahmd14