2013-12-13 86 views
0

如何將其他端口添加到已經處於活動狀態的TCP服務器? (如果可能)將其他端口添加到已激活的TCP服務器?

類似,

procedure TForm1.FormCreate(Sender: TObject); 
begin  
    IdTCPServer1.Bindings.Add.Port := 5555; 
    IdTCPServer1.Active := not IdTCPServer1.Active 
end; 


procedure TForm1.Button1Click(Sender: TObject); 
begin 
    //IdTCPServer1.Active := false; 
    //IdTCPServer1.Bindings.Clear; 
    IdTCPServer1.Bindings.Add.Port := strtoint(Edit1.Text); //so here i want to add additional port 
    //IdTCPServer1.Active := true; 
end; 
+0

取消激活服務器,添加要監聽的端口並再次激活服務器。 – TLama

+0

其實,你可以**添加**新的端口,而不先停用。但是你不能**刪除**端口而不停用。 –

回答

1

您可以添加一個新的端口必須先停用服務器。只需Add()新的端口TIdTCPServer.Bindings集合,然後撥打TIdTCPServer.StartListening()。那些尚未運行的任何綁定將開始運行:

procedure TForm1.FormCreate(Sender: TObject); 
begin  
    IdTCPServer1.Bindings.Add.Port := 5555; 
    IdTCPServer1.Active := True; 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
var 
    NewPort: TIdPort; 
    I: Integer; 
    Found: Boolean; 
begin 
    I := StrToInt(Edit1.Text); 
    if (I < 1) or (I > 65535) then 
    raise Exception.Create('Port value is not valid'); 

    NewPort := TIdPort(I); 
    Found := False; 

    for I := 0 to IdTCPServer1.Bindings.Count-1 do 
    begin 
    if IdTCPServer1.Bindings[I].Port = NewPort then 
    begin 
     Found := True; 
     Break; 
    end; 
    end; 

    if not Found then 
    IdTCPServer1.Bindings.Add.Port := NewPort; 

    IdTCPServer1.StartListening; 
end; 

然而,在這個時候,你不能刪除任何端口,而服務器處於活動狀態。您必須先停用服務器。

相關問題