2013-12-13 2 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; 

그러나,이 시간에, 당신은 어떤 포트를 제거하지 수 있습니다. 먼저 서버를 비활성화해야합니다.