TIdTCPServer 의 경우 각 Peer 는 하나의 Thread 로 간주됨.
Indy10 의 경우 이것의 이름은 TIdContext  (Indy9 는 TIdPeerThread)
 
 
브로드캐스팅일 경우 아래와 같은 형식으로 하면 됨.
 
// TIdTCPServer 에 물려있는 모든 Peer 에게 문자열 한 줄 전송
with IdTCPServer1.Contexts.LockList do begin
  for
i:=0 to Count-1 do begin
    TIdContext(Items[i]).Connection.WriteLn('브로드캐스트');
  end;
end;
 
 
 
원하는 Peer 에게 보내고 싶을 경우엔, TIdTCPServer 의 OnConnect 에서 넘어오는 AContext 를 차곡차곡 저장해놨다가 사용하면 됨.
 
아래는 버튼 클릭할 때마다 하나의 Peer 에게만 보낸다고 가정할 때.
(여럿에게 보낼 땐 배열이나 대충 만들어서 돌리면 되겠지)
 
 
 
// 마음대로 사용할 Peer
MyPeer: TIdContext;
 
... ...
 
// 접속시 넘어온 Peer를 저장 
procedure TfrmServer.IdTCPServer1Connect(AContext: TIdContext);
begin
  MyPeer:=AContext;
end;
 
// 버튼 클릭할 때마다 문자열 한줄 전송
procedure TfrmServer.Button1Click(Sender: TObject);
begin
  MyPeer.Connection.IOHandler.WriteLn('From Server');
end;
 




Posted by bloodguy
,