2016-07-15 35 views
0

Ich verwende Embarcadero RAD Studio 10. Ich versuche, Indy Client/Server-Komponenten in meiner Anwendung zu verwenden.Adjust TCP/UDP Server Laufzeit

Ich möchte die IP-Adresse und den Port des TCP/UDP-Servers zur Laufzeit anpassen.

kann ich die Standardeinstellungen zur Entwurfszeit sehen:

default option

ich Einträge in die Bindings und die DefaultPort eingestellt hinzufügen können.

Aber ich möchte dies tun, während das Programm läuft. Ich möchte die Bindungen und den Port in meiner Benutzeroberfläche festlegen und eine Schaltfläche drücken, damit der Server das verwendet, was ich eingegeben habe.

IP and port bar

Wie mache ich das?

Antwort

0

Die Bindings ist eine Sammlung von TIdSocketHandle Objekte. Das Hinzufügen eines neuen Eintrags zur Sammlung zur Entwurfszeit entspricht dem Aufruf der Bindings.Add()-Methode zur Laufzeit.

TIdSocketHandle hat IP und Port Eigenschaften. Wenn ein Objekt TIdSocketHandle erstellt wird, wird sein Port mit dem aktuellen Wert des DefaultPort initialisiert.

Um zu tun, was Sie fragen, rufen Sie einfach Bindings.Add() und legen Sie die Eigenschaften IP und Port des neuen Objekts. Zum Beispiel:

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

Die gleiche Sache mit TIdUDPServer.

+0

Dieser Code ist Delphi, aber ich brauche C++ können Sie dies mit C++ tun? – ahmd14

+0

@Buraki gibt es * nichts * in Ihrer Frage, die besagt, dass Sie C++ vs Delphi verwenden. Das nächste Mal, bitte geben Sie solche Details, sie sind wichtig. –

+0

Es tut mir leid, das ist meine Schuld, nächstes Mal werde ich vorsichtig sein. – ahmd14