친절한 설명 감사합니다. 그 의미는, tcp/ip는 "respond and forget?" 이와 비슷한 개념이라 일단 서버가 브라우저(클라이언트)의 요청 (request)에 반응하고 나면 브라우저의 변화에 관해 브라우저에서 요청이 있기 전에는 알 수 있는 방법이 없지만, 접속은 계속 유지를 하고 있다고 보면 되는 건가요?
그렇다면, 아래 (2) 번 단계에서 서버의 어떤 변수에 이 id 는 현재 1번 정보를 보냈다는 내용이 저장되어 있으면 (예컨대 Number := 1 처럼),
(3) 번 단계에서 client 가 서버에 request 할 때 그 내용에 "1번에 대한 반응이라는 정보"가 없어도 서버에서 이 client 가 1번 내용에 대한 반응이란 사실을 알 수가 있는 것인지요?
프로그램 구상에 꽤 중요하다고 생각되는데, 만약 위에서처럼 서버에서 브라우저에 보낸 정보를 기억할 수 있다면, 여러 개의 정보를 받아야 할 때 매우 간단해 지네요.
예를 들어
interface
type
TwmDC = class(TWebModule)
ppSurvey: TPageProducer;
private
i : integer;
Data_Content : array of string;
....
end;
처럼 정의되어 있다고 치고,
앞 부분 어디서 i := 0 으로 initialize 합니다 (예컨대 log-in 한 순간이라든가).
그런다음
procedure TwmDC.ppSurveyAction (Sender: TObject; Request: TWebRequest;......);
begin
inc (i); <======================== 여기하고
if ( i > lastnumber) then Response.content := ppThankYou.Content
else Response.Content := ppSurvey.Content;
end;
procedure TwmDC.ppSurveyHTMLTag(Sender: TObject; Tag: TTag;.... );
begin
if TagString = 'DATA' then ReplaceText := Data_Content[i]; <====== 여기가 핵심입니다
end;
이런 식의 코딩이 가능하다는 것인지요?
이게 안되면 ppSurvey 내에 어디 i 값을 hidden value 로 숨겨두고, ppSurveyAction 의 Request 에서 다시 값을 찾아서 하는 방법을 써야 하겠죠.
이프리뉴 님이 쓰신 글 :
: seg 님이 쓰신 글 :
: : 안녕하세요..
: :
: : 일단 질문의 요지는, tcp/ip 기반의 네트웤에서는 서버가 클라이언트의 요청에 반응하고 나면 클라이언트의 상태에 관해 알 수 없다고 하는데, 그렇다면 다시 그 클라이언트에서 요청이 올 때 다시 백지에서 시작해야 하는 것인가 라는 점에 관한 것입니다.
: :
: : 예를 들어, 클라이언트가 접속을 하면 1번, 2번, 이렇게 차례로 서버에서 정보를 보내 주고, 클라이언트는 확인하여 수정하거나 그대로 서버에 돌려보내면 서버는 다시 다음 번호의 정보를 보내 주는 방식입니다.
: :
: : 클라이언트 (브라우저) 서버 (웹서버)
: :
: : 사용자 id 입력 (1) -----------------------> 그 id 의 1번 정보 추출
: : <---------------------- (2) 정보를 클라이언트에 보냄
: : 1번 정보보고 답을 함 (3) ---------------> 1번 정보를 처리
: : (4) <-------------- 2번 정보 추출
: : 2번 정보 보고 답을 함.. (5) -----------------> 2번 SAVE, 3번 추출....
: :
: :
: : 이런 순서가 되겠죠.
: :
: : (1) 번은 맨 처음 들어오는 거니까 사용자 정보가 반드시 필요하다고 가정하구요,
: :
: : 이 때 3번과 5번 같은 REQUEST 에 대해서도 클라이언트가 사용자 ID 에 대한 정보를 계속 보내야만 하는가입니다.
: : 아니면 서버의 프로그램에서, 예컨대 WEBBROKER 같은데서 user_id = , last_number = 등과 같은 변수를 object 내에 만들어 두고 값을 저장해 두면, 같은 브라우저에서 계속 접속하면 그것이 해당 user_id 에 대한 것임을 서버가 알 수 있느냐 하는 점입니다. 만약에 안되면 계속 log-in 되어 있는 상태를 어떻게 알 수 있는지요?
: :
: : Session 이 이런 상황을 처리하기 위한 것인지?
: :
: : 답변에 대해 미리 감사드립니다.
:
:
: TCP/IP는 접속이 되면 종료가 되기 전까지는 접속상태를 유지합니다.
:
: 통신중에는 ID정보를 한번 주면 상대방이 접속이 유지되는 동안 그 정보를 가지고 있냐가 중요한 요소가 될 것 같습니다
:
: 패킷은 달라도 접속이 유지되어 그 정보에 특정 필드를 어떤식으로 가지고 있고 활용하느냐는 서버프로그램에서
:
: 결정될 듯 합니다.
|