아래 소스코드를 봐주세요.
....
VAR
Clien : Array of TIdTCPClient;
....
....
procedure TForm1.FormCreate(Sender: TObject);
var
IPAddr : String;
i : Integer;
Begin
.....
.....
for I := 0 to ListBox1.Count - 1 do
Begin
IPAddr := ListBox1.Items.Strings[i];
Client[i] := TIdTCPClient.Create(Application);
Client[i].ConnectTimeout := 200;
Client[i].IPVersion := Id_IPv4;
Client[i].Port := 97;
Client[i].Host := IPAddr;
TRY
Client[i].Connect;
Except
Memo1.Lines.add('Connect Error : ' + IPAddr);
END;
End;
End;
폼이 생성될때 클라이언트를 만들어 넣어주고 connect하는데요.
10개 이상의 클라이언트를 생성하려 하면 문제가 생깁니다.
처음엔 10개의 TIdTCPClient가 생성되고 30초 동안 아무것도 안움직이고 멈춰있습니다.
그 다음 부터는 5개가 생성된 다음 30초씩을 기다려야 추가로 또 5개씩 생성됩니다.
그뿐이 아니예요.
간혹 서버는 문제가 없는데 Connect가 안되는 경우가 불규칙하게 발생합니다.
TIdTCPClient를 배열로 하지 않고 TObjectList 또는 TComponentList에 넣어서 해봐도 마찬가지입니다.
이 문제를 해결할 수 있는 방법을 알려주시면 감사하겠습니다.
|