1번과 3번만 답합니다. 2번은 찾아 보세요...
1번은 for 문을 사용합니다.
For k := 0 to SerVerSocket1.Socket.ActiveConnections-1 do begin
ServerS.Socket.Connections[k].SendText(edit1.Text+':'+Memo1.Text);
end;
3 번은
소켓의 Read 이벤트에서
MessageAn := Socket.ReceiveText;
posti := pos(' ',MessageAn);
if (Copy(MessageAn,1,(posti-1)) = 'SHOW') then
원하는 동작 ....
....
이런식으로 이용을 하시든지 아니면 스트림을 사용하여 전송을 합니다.
아니면 대문자로 글자의 길이를 일정하게 해서 메시지를 전송할 수 도 있습니다.
도움이나 될지 모르겠네요......
정숙 wrote:
> 지금 소켓 프로그램을 짜고 있는데요...
> 모르는 부분이 있어서 이렇게 글을 올립니다.
>
> 1. 한개의 서버에서 메세지를 보낼때 여러개의 클라이언트에서 메세지를 받게 하려면 어떻게 해야하나요...??
> (지금 현재는 1:1 밖에 안되거든요...그러니깐 서버 1 : 클라인언트 3 이 되게 하고싶은데요..)
>
> 2. 밑에 프로그램을 보면 제가 SendText와 ReceiveText을 썼는데요...이거 말구 SendBuf와 ReceiveBuf을 이용하고 싶은데 어떻게 해야하나요..
>
> procedure TForm1.Memo2KeyPress(Sender: TObject; var Key: Char);
> var
> iValue : Integer;
> begin
> if Key = #13 then begin
> Key := #0;
> if IsClient then
> iValue := ClientS.Socket.SendText(edit1.Text+':'+memo1.Text)
> else
>
>
> iValue := ServerS.Socket.Connections[0].SendText(edit1.Text+':'+Memo1.Text);
>
> memo2.lines.add(edit1.Text+':'+memo1.Text);
> memo1.lines.Clear;
> memo1.SetFocus;
> memo1.SelStart := 0;
> end;
> end;
>
> procedure TForm1.ClientSRead(Sender: TObject; Socket: TCustomWinSocket);
> begin
> memo2.Lines.Add(Socket.ReceiveText);
> end;
>
> 3. 마지막으로 실행창을 띄운 뒤 메세지를 'SHOW Good Morning' 라고 했을때 Show Message 가 뜨고 SHOW 글자 을 뺀 Good Morning가 Show Message 창에 뜨게하고 싶은데요...
> (대문자 'SHOW' -> Show Message 'Good Morning' -> Show Message창의 내용)
> P.S 여기서 핵심은 Chat창에서 대문자 'SHOW'을 입력시 Show Message가 뜨게 하는겁니다.
>
> 쫌 복잡하죠....
> 급히 해야 될 숙제거든요 -.-;
> 제가 하기엔 어려운 부분이라...
> 이 세가지 질문중 아는 부분만 알려주셔두 정말 정말 고맙겠습니다.
> 아주 급하거든요... T.T
> 답이 빨리 왔으면 좋겠습니다.
>
> 이메일 : jshope@korea.com