제가 지금 채팅 프로그램을 만들고 있는데요
참고로 서버를 만들고 client가 서버에 접속해서 채팅하는 식의 프로그램입니다.
서버의 속성 설정은
server type = stNonBlocking
크라이언트 속성 설정은
client type = ctNonBlocking
입니다.
접속한사람이 한사람이면
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
contents:String;
begin
contents:=Socket.ReceiveText;
Memo1.Lines.Add(contents);
ServerSocket1.Socket.Connections[0].SendText(contents);
end;
이런식으로 해서 되는데..
여러 면일때는
되질 안네요
제가 데이타 베이스 만하다 보니까.. 통신쪽이 약한데요..
이번에 통신 공부를 할려구 합니다. 고수님들의 지도 부탁드립니다.
> 제가 지금 채팅 프로그램을 만들고 있는데요
> 참고로 서버를 만들고 client가 서버에 접속해서 채팅하는 식의 프로그램입니다.
> 서버의 속성 설정은
> server type = stNonBlocking
>
> 크라이언트 속성 설정은
> client type = ctNonBlocking
>
> 입니다.
>
> 접속한사람이 한사람이면
> procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
> Socket: TCustomWinSocket);
> var
> contents:String;
> begin
> contents:=Socket.ReceiveText;
> Memo1.Lines.Add(contents);
>
> ServerSocket1.Socket.Connections[0].SendText(contents);
>
> end;
> 이런식으로 해서 되는데..
> 여러 면일때는
> 되질 안네요
>
> 제가 데이타 베이스 만하다 보니까.. 통신쪽이 약한데요..
> 이번에 통신 공부를 할려구 합니다. 고수님들의 지도 부탁드립니다.
>
위에있는 문장을 루프를 돌리면 어떨까 합니다.
ServerSocket1.Socket.Connections[0].SendText(contents);
대괄호 안의 숫자가 접속할때 마다 1씩 증가 하죠.
만약 3번째 접속한 사람에게는
ServerSocket1.Socket.Connections[2].SendText(contents);
이렇게 보내면 되죠.
그런데 접속한 사람이 얼마나 되는지는 나름대로 규약을 만들어야 될꺼같네요.
서버쪽에서 변수를 하나 정의 하고 새로 접속될때마다 변수를 증가시키면
접속한 컴퓨터의 수가 나오겠죠?
그럼 좋은 결과 있길 바랄께요.