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;
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;
begin
MyPeer:=AContext;
end;
// 버튼 클릭할 때마다 문자열 한줄 전송
procedure TfrmServer.Button1Click(Sender: TObject);
begin
MyPeer.Connection.IOHandler.WriteLn('From Server');
end;
'Delphi' 카테고리의 다른 글
[Delphi] Indy10 TCP - 구조체 데이터 주고받기 (0) | 2009.04.18 |
---|---|
[Delphi] WM_COPYDATA 로 통신하기 (0) | 2009.04.18 |
[Delphi] Indy10 을 이용한 Stream 전송 (TCP/IP) (0) | 2009.04.18 |
간단한 키보드 훅 (0) | 2009.04.18 |
자신의 ip 알아내기 (0) | 2009.04.18 |