각 클라이언트에서
Socket.SendBuf 나
Socket.SendStream 으로 서버로 자료를 보냈을때
stThreadBlocking 모드인 서버소켓에서 ServerGetThread 로
TWinSocketStream 을생성 이용히서 데이타를 받았을때
Msg:='Send';
FileLength :=length(Msg);
if FileLength > 0 then begin
SocketStream.WriteBuffer(FileLength,SizeOf(FileLength));
SocketStream.WriteBuffer(Msg[1],FileLength);
end;
이렇게 하면 자료를 보낸 클라이언트로는 데이타가 가는데
만약 여러 클라이언트로 보낼 방법에 대해서 조언좀 부탁 드립니다.
모르겠네요... 그렇다고 그 상황을 제가 직접 만들기도 그렇구..
저는 1:1 영상대화만 만들어 봤거든요.. 그것두 영상을 보낼때
기본 소켓말고 인디소켓써서 방식이 좀 틀린것 같네요.. --;
예를 들어서) 단순히 특정 문자열만 보낸다면, 서버소켓에 접속된
클라이언트들의에게 모두 루프로 돌리면 되는데..
아래코드는 제가 예전에 썻던코드중에 일부분인데.. SndPacket 이라는
Packet 스트링을 특정 접속된 사용자에게 보내는 루틴입니다.
SndPacket := 'PS' + 'L' + Convert4byte(Length(PackBody) + 24) + 'L' + Spec +
_PID + '77-77-77-77-77-77' + PackBody + 'PE';
ServerSocket.Socket.Connections[SockNum].SendText(SndPacket);
그런데 아래처럼 현재 접속된 모든 사용자를 알수 있으므로.. -_-
Function TServerComm.ActiveConnection : Integer;
begin
Result := ServerSocket.Socket.ActiveConnections;
end;
for i:=0 to ActiveConnection do
ServerSocket.Socket.Connections[i].SendText(SndPacket);
이런식으로 모두에게 문자열을 보내면 되지 않을까요?
의도하신 질문에 맞는 대답인것 같지 않지만.. -_- 제가 드릴수
있는 답변은 여기까지 인것 같네요.. ^^
그럼, 꼭 성공하세요~