안녕하세요....
꼭~좀 도와주세요...ㅡ.ㅜ;;
Client가 메세지를 보내면 일단 서버가 접수후,
메세지를 만들어서, 클라이언트로 보내줍니다...
그리고는 서버는 Suspend 시켜놓구
그 Client가 다시 메세지를 보내면, 해당 쓰레드를 Resume 시켜주고싶은데요
어떻게 그 기존에 쓰레드를 Client가 메세지를 보냈을때 다시 시작할수 있는지요...
Client : 서버에 데이터 요청 (2000 건)
Server : 데이터를 1000건을 보내놓구, Suspend
Client : 1000건을 처리후, 그리고는 메세지를 보내면
Server : Resume 되면서, 다시 Client에게 1000건을 보내줌
어떻게 다시 Resume을 시키죠??
<예>
const SELECT_DONGHO = 'SD';
const SELECT_BSJG = 'SB';
const INSERT_CONTENTS = 'IC';
const THREAD_START = 'TS';
if (strType = SELECT_DONGHO) then begin
cnt := 0;
with qrySELECT_DONGHO do begin
if Active then Close;
ParamByName('psCD_SITE').AsString := Trim(strData);
Open;
First;
while not EOF do begin
strTemp := strTemp + FieldByName('DS_DONG').AsString + '^' +
FieldByName('DS_CUNG').AsString + '^' +
FieldByName('DS_HO' ).AsString + '^|';
cnt := cnt + 1;
Next;
if (cnt=1000) or (EOF) then
begin
if EOF then
MsgResult := SELECT_DONGHO + #9 + strTemp + '@'
else
MsgResult := SELECT_DONGHO + #9 + strTemp;
pThread.Connection.WriteLn(MsgResult);
cnt := 0;
strTemp := '';
pThread.Suspend;
end;
end;
end;
Suspend시키면 더 이상 메세지를 받을 수 없기 때문에 하나의 Connection가지고는 방법이 없을거 같구요... Connection을 하나 더 만들어서 Suspend시킨 쓰레드를 다시 Resume하라고 통지보내는 방식으로 하셔야 할거 같은데...
제 생각엔 클라이언트가 요청하면 서버가 데이터를 저장해놓고 총 갯수를 클라이언트에 전달해주고, 클라이언트는 이 전달된 갯수를 가지고 몇번째부터 몇번째까지 데이터를 주라고 서버에 요청하는 방식으로 하는게 좋을거 같네요...
^^ 항상 즐코하세요...