<!--CodeS-->
procedure ServerFrm.DisconnectIP(const AIP: string);
var
i: Integer;
ABC: TABC;
begin
for i := ABCList.Count - 1 downto 0 do
begin
ABC := TABC(ABCList.Items[i]);
if ABC.IP = AIP then
begin
ABC.Disconnect;
ABCList.Delete(i);
Break;
end;
end;
end;
<!--CodeE-->
저는 Class를 이용한답니다.
<!--CodeS-->
// Class 선언부
type TABC = class(TObject)
private
FIP: String;
FThread: TIdPeerThread;
public
procedure DisConnect;
property IP: String read FIP write FIP;
property Thread: TIdPeerThread read FThread write FThread;
// Class 선언부
procedure TABC.Disconnect;
begin
FThread.Connection.Disconnect;
end;
<!--CodeE-->
위와 같은 클래스를 TObjectList에 저장해 둔 다음
IP로 검색해서 Disconnect Methode를 호출하면 될 듯 합니다.
Private
ABCList := TObjectList; //선언 하시고
FormCreate시
ABCList := TObjectList.Create; //생성해 주시고
FormDestroy시
ABCList.Free; //파괴?해주시면 됩니다.
클라이언트가 서버에 접속할 때 추가는
IdTCPServer.OnConnect부분에서
<!--CodeS-->
ABC := TABC.Create;
ABC.IP := AThread.IOHandler.Connection.PeerIP; // <== 요부분 기억이 잘 안나네요
ABC.Thread := AThread;
ABCList.Add(ABC);
<!--CodeE-->
Disconnect는
<!--CodeS-->
procedure ServerFrm.DisconnectIP(const AIP: string);
var
i: Integer;
ABC: TABC;
begin
for i := ABCList.Count - 1 downto 0 do
begin
ABC := TABC(ABCList.Items[i]);
if ABC.IP = AIP then
begin
ABC.Disconnect;
ABCList.Delete(i);
Break;
end;
end;
end;
<!--CodeE-->
기냥 테스트 안해보고 머리속에 있는데로 코딩한거라 에러나 오타가 있을수도...