인디의 블로킹에서는...
초기 접속시 ID와 패스워드를 주고받아 인증처리를 했습니다.
근데 기본 소켓의 논블로킹 모드를 사용할 경우...
이걸 어떻게 처리해야 하나요?
예를 들어...
onConnect()
begin
Socket.SendText('/인증정보보내라');
end;
onClientRead()
var
buf : string;
begin
buf := Socket.ReceiveText;
buf파싱;
if 커맨드=인증정보 then 인증처리
else if 커맨드=다른명령 then 다른처리;
end;
대충 이런 형태를 띄고 있을때...
정상적인 클라이언트야 당연히 인증정보 먼저 보내고 다른 패킷을 보내게 되겠죠.
그렇지만 비정상적인 녀석이라면....접속하고 바로 인증없이 다른 명령을
보낸다면 이걸 어떻게 걸러내야 되는지요?
유저는...TCollection과 TCollectItem을 이용해서 리스트 관리를 합니다만..
비정상적으로 명령부터 보내는 녀석을 어케 걸러야 할지...
onClientRead 에서는 Socket을 파라메터로 받기때문에 곤란하네요.
으음...