12.서버 푸쉬


  이 방식은 특정한 형식의 MIME Type을 사용하므으로써 가능하다. 즉, 기존에 우리가 사용한 "Content-type: text/html"이 아닌, "Content-type: multipart/mixed-replace;boundary=String"을 사용하면 된다. 일단 예를 보자.

#include <stdio.h>

main()
{
    int i;
    char *String = "TESTboundary";

    printf("Content-type: multipart/x-mixed-replace;");
    printf("boundary=%s\n\n", String);

    for(i = 0;i < 10;i++){
       printf("--%s\n",String);
       printf("Content-type: text/html\n\n");
       printf("This Is %d th Screen \n", i);
    }

    printf("--%s--\n", String);
}


  위의 예도 앞장에서의 예처럼 10까지 움직인다.

  실제로 브라우저 받아들이는 문자들은 다음과 같은 구조를 가지게 된다.

Content-type: multipart/x-mixed-replace;boundary=TESTboundary

--TESTboundary
Content-type: text/html

This Is 0 th Screen
--TESTboundary
Content-type: text/html

This Is 1 th Screen
--TESTboundary
Content-type: text/html

............

This Is 9 th Screen
--TESTboundary--


  실제로 너무 빨라서 잘 안보일 수도 있다. Reload버튼을 눌러보면 얼핏 보인다. 움직임을 중지시키려면 STOP버튼을 누르거나, 아예 브라우저를 종료하면 된다.

    boundary   각 문서들을 구분하는 구분자로 실제 문서간의 구분은 분리자 앞에 "--"를 붙여서 사용하며, 문서의 최종 끝은 앞뒤에 "--"를 붙여서 사용하면 된다.
  이 기술을 사용하여 IMAGE를 연속적으로(이기술은 Client Pull보다 빠르게 처리된다)호출함으로써 animation처럼 보이게 할 수 있다.이때 장점은 별도의 Plugin이나 JavaApplet을 다운받지 않아도 된다는데 있다.

  이렇게 클라이언트 풀과 서버 푸쉬, 두가지 방식을 알아봤는데, 사실 이 두가지 기술은 모두 사용자에게 지속적인 정보를 제공할 수 있는 장점이 있는 반면, 무한히 지속되는 경우서버의 큰 부담( 특히 다수의 사용자가 이 기능을 이용하게 되면...)이 된다.

  따라서, 꼭 필요한 경우에 한해서 제한적으로 사용할 것을 권장한다.

- 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