11.클라이언트 풀


  웹의 단점중에 하나가 한번 연결이 되었다가 모든 정보를 다 주고 받으면, 연결이 종결된다는 점이다. 이러한 것을 극복하기 위하여 한번 페이지를 열 게 되면 계속해서 자동적으로 페이지가 변경되는 기술이 필요한 경우에 사용할 수 있는 기술이 다음 두가지가 있다.

  • 클라이언트 풀(Client Pull)

  • 서버 푸쉬(Server Push)

  먼저, 클라이언트 풀방식에 대해서 살펴보자.

  이 방식은 브라우저레벨에서 특정한 태그(META)를 이용하는 방법이다.

<META HTTP-EQUIV="Refresh" CONTENT="10; URL=http://hometown.weppy.com/~deadfire//test.cgi">

  위와 같이 작성되면, 사용자의 별도의 입력이 없어도, 10초후에 test.cgi를 자동적으로 호출하게 된다. 이 META Tag는 단순히 HTML Tag를 이용하는 기법으로 HTML 3.0 부터 포함되었다. 이 메타태그는 HTML문서의 HEAD부분에 와야 한다.

  이렇한 META Tag를 계속가지는 문서가 호출되는 경우 계속적인 Update가 일어난다. 즉, 위와 같은 메타태그가 없거나, 브라우저창이 닫히면 종결된다.

  CONTENT에 단위는 시간인데, 0으로 주게 되면, 최대한 빨리 가져오게 된다. 또한 URL에 들어가는 자료형식은 HTML이나, CGI또는 이미지, 오디오 파일등이 가능하다.

  이 방식은 사실은 웹서버나 CGI가 지원하는 기능이 아니라, 브라우저가 자동적으로 다음 페이지를 호출하는 형식으로 이루어져 있다.

    브라우저   클라이언트 풀 방식을 모든 브라우저가 지원하는 것은 아니다. HTML3.0을 지원하는 브라우저만 그 대상이 된다. 그러므로, 이러한 기술을 사용할 때는 그점을 기억해야 한다.(물론, Navigator 3.X이상, Explorer 3.X이상에서는 잘 작동한다. )
  다음과 같은 CGI를 작성하게 되면, 1에서 10까지 계속 변화가 가능하다. (CGI파일명을 pull로 하여 작성할 것, 왜냐하면, 아래 예중에서 pull이라는 CGI이름을 디코딩하여 사용하였기 때문임.).

#include <stdio.h>

main(argc, argv)
int argc;
char**argv;
{
    int cnt;

    if( argc == 2) cnt = atoi(argv[1]);
    else cnt = 1;

    printf("Content-type: text/html\n\n");
    printf("<html><head>\n");

    if( cnt < 10 ){
       printf("<META HTTP-EQUIV='Refresh' CONTENT='2; ");
       printf("URL=./pull?%d'>\n", cnt+1);
    }

    printf("</head><body>\n");
    printf(" <h2>Client Pull : %d </h2>\n", cnt);
    printf("</body></html>\n");
}


  이게 어떻게 작동되는 거냐고 궁굼해하지 말고, 일단 한번 짜보고서 실행결과를 보면 이해가 갈 것이다.

- Last Update : 2001.7.9 by Deadfire(http://www.deadfire.net)

CGI with C 활용
브라우저구분
환경변수LIST
클라이언트풀
서버푸쉬
Form Mail
진행현황보기
Cookie
MD5
File Download
SSI
Redirection
File Upload
GD1.2
Database
마치며

Copyright ⓒ 1997 ~, Deadfire Program Master