인디를 사용하여 채팅서버를 구축하고 있습니다.
그런데 특정IP에게만 메세지를 전달하고 싶은데,
현 접속자중 어떻게 발취하여 메세지를 전달해할지 답답하네요
어떻게 해야 합니까?..고수님의 한수 지도 바랍니다.
<!--CodeS-->
================서버 소스 ===========
procedure TChatServer_SF.IdTCPServer1Connect(AThread: TIdPeerThread);
begin
//현재 접속할때....정보 수집은 어떻게 해야 하는지.....
end;
procedure TChatServer_SF.IdTCPServer1Execute(AThread: TIdPeerThread);
var
List : TList ;
Loop : integer ;
stReceivedText : String ;
IdPeerThread : TIdPeerThread ;
begin
stReceivedText := AThread.Connection.ReadLn('',5);
if stReceivedText = '' then exit;
List := IdTCPServer1.Threads.LockList;
try
for Loop := 0 to List.Count -1 do
begin
IdPeerThread := TIdPeerThread(List.Items[Loop]);
//현재 접속된 유저의 정보를 어떻게 비교를 해야할지..모르겠구요
//locklist에 정보를 어떻게 활용을 해야할지 모르겠내요...
if (IdPeerThread <> nil) then
begin
try
IdPeerThread.Connection.WriteLn(stReceivedText);
except
IdPeerThread.Stop ;
end;
end;
end;
finally
IdTCPServer1.Threads.UnlockList ;
end;
end;
<!--CodeE-->
ClientThread: TIdPeerThread 라고 선언하시고요.
그외에 담을 정보와 함께요.
그리고 AThread 를 확인 해보시면 Data라는 빈공간이
있습니다.
AThread.Data에는 Client정보를
Client정보 클래스에는 AThread를 서로 참조 할수
있도록 하시고요.
두개를 잘 활용하시면 쉽게 하실수 있을꺼 같습니다.
예제는 많이 있습니다. 특히 네이버에
류종택님이 운영하시는 카페에 보시면 세균맨님께서
원하시는 정보를 꼭집어서 만든게 있을겁니다.