안녕하세요
음.. socket 통신을 공부하고있습니다.
만약에 하나의 client socket 이 지연된다든지 무한루프상태가 되면은
다른 socket 의 서비스를 처리할수 없다는것에서 문제가 생깁니다.
간단하게 client 가 접속하여 서버는 client 에서 ID 와 PASS 를 전송하게 기다리고 있을때
다른 client 접속처리는 어떻게 해야만 하는지..
//--------
procedure TFrm_main.server_socketClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
var
var s : string ;
begin
while s = '' do s := socket.ReceiveText; //ID 받기를 기다림..
if s := '1111' then showmessage('인증성공')
else showmessage('인증실패');
end;
Thread 구동방식이 있다고 하는데 아직 어떻게 socket 에 접목을 시켜야 하는지 막연하기만 합니다..
각각의 클라이언트 thread 를 생성해서 처리한다면 100접속은 100개의 스레드가 생기는것인데 그렇게 하는 방법인지..
넌블럭킹 방식과 스레드블럭킹 방식의 차이와 어떤작업에 적합한지 궁금합니다..
고수님들의 조언 부탁합니다..
Connect 이벤트에서 While를 돌리지마시고
ClientRead 이벤트에서 데이터를 받아 처리 하도록 하시는게 좋겠군요.