PUT/SET API

1. wbPutHdr

wbPutHdr은 Response의 헤더를 설정한다.

WBAPI 프로그램에서 처리된 후 만들어지는 결과는 클라이언트에게 전달 되어야 하며, 전달되는 방법은 HTTP 프로토콜을 따르게 된다. 이때 클라이언트에게 Response로 가는 것은 Response 헤더와 Response 데이터로 구성되며 wbPutHdr()는 Response의 헤더를 만들어 주는 함수로 데이터 필드를 작성하는 함수보다 먼저 선언되어야 한다. 이러한 순서를 지켜 주어야 WBAPI가 문제없이 수행된다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    int wbPutHdr(WBSVCINFO *rqst, char *key, char *value)
  • 반환값

    헤더 설정이 정상적으로 수행될 경우 wbPutHdr()은 1을 반환한다. 에러가 발생하는 경우는 –1을 반환한다.

  • 예제

    <wbputhdr.m>

    *DOMAIN
    webtob1
    
    *NODE
     tmaxh1         WEBTOBDIR="/user2/haninho/webtob",
                    SHMKEY = 54777,
                    DOCROOT="/user2/haninho/webtob/docs",
                    APPDIR="/user2/haninho/webtob/ap",
                    PORT = “7654”
    
    *SVRGROUP
     htmlg          NODENAME = "tmaxh1", SvrType = HTML
     webapg         NODENAME = "tmaxh1", SVRTYPE = WEBSTD
    
    *SERVER
     html           SVGNAME = htmlg, MinProc = 1, MaxProc =2
     wbputhdr       SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
    *SERVICE
     test           SVRNAME = wbputhdr
    
    *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
    *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

      $wscfl –i wbputhdr.m
    2. 서비스 테이블을 생성한다.

      $wsgst
    3. 소스 파일을 생성한다. 다음은 요청을 처리하는 WBAPI 프로그램 예제로 파일명은 wbputhdr.c이다.

       #include        <stdio.h>
       #include        <usrinc/atmi.h>
       #include        <usrinc/wbapi.h>
      
       test(WBSVCINFO *rqst) {
       char *header1;
       wbPutHdr(rqst, "Content-Type", "application/octet-stream");
       header1 = wbGetHdr(rqst, "Content-Type");
       wbPrint(rqst, "Response content-type : %s", header1);
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

      $compile c wbputhdr
    5. 다음은 결과가 출력된 화면이다.

      브라우저로 WBAPI 서비스를 호출하면 다음과 같은 결과가 나온다.

      image

  • 관련 함수

    wbPutIntHdr()

2. wbPutIntHdr

wbPutIntHdr은 Response의 정수형태의 헤더를 설정한다.

정수형태로 지정된 헤더의 값을 설정하여 헤더를 추가하는 함수로 데이터 필드를 작성하는 함수보다 먼저 선언되어야 한다. 이러한 순서를 지켜 주어야 WBAPI가 문제없이 수행된다.

인수 name에는 헤더의 이름을 설정하고 ivalue에는 인수 name에 지정된 헤더의 정수값을 설정한다.

wbPutIntHdr()는 정수형태가 아닌 헤더에 설정하면 에러를 발생시킨다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    int wbPutIntHdr(WBSVCINFO *rqst, char *name, int ivalue)
  • 반환값

    헤더 설정이 정상적으로 수행될 경우 wbPutIntHdr()는 1을 반환한다. 에러가 발생하는 경우는 –1을 반환한다.

  • 예제

    <wbputinthdr.m>

    *DOMAIN
    webtob1
    
    *NODE
     tmaxh1         WEBTOBDIR="/user2/haninho/webtob",
                    SHMKEY = 54777,
                    DOCROOT="/user2/haninho/webtob/docs",
                    APPDIR="/user2/haninho/webtob/ap",
                    PORT = “7654”
    
    *SVRGROUP
     htmlg          NODENAME = "tmaxh1", SvrType = HTML
     webapg         NODENAME = "tmaxh1", SVRTYPE = WEBSTD
    
    *SERVER
     html           SVGNAME = htmlg, MinProc = 1, MaxProc =2
     wbputinthdr    SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
    *SERVICE
     test           SVRNAME = wbputinthdr
    
    *URI
     wbapi          Uri = "/svct/", S1vrtype = WEBSTD
    
    *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

      $wscfl –i wbputinthdr.m
    2. 서비스 테이블을 생성한다.

      $wsgst
    3. 소스 파일을 생성한다. 다음은 요청을 처리하는 WBAPI 프로그램 예제로 파일명은 wbputinthdr.c이다.

       #include        <stdio.h>
       #include        <usrinc/atmi.h>
       #include        <usrinc/wbapi.h>
       test(WBSVCINFO *rqst)
       {
       int header2;
       wbPutIntHdr(rqst, "Retry-After", 5000);
       header2 = wbGetIntHdr(rqst, "Retry-After");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

      $compile c wbputinthdr
    5. 다음은 결과 출력에 대한 예이다.

      Telnet로 WBAPI 서비스를 호출하면 다음과 같은 결과가 나온다.

       $telnet 61.77.153.5 7654
       Trying 61.77.153.5...
       Connected to 61.77.153.5.
       Escape character is '^]'.
       GET /svct/test HTTP/1.1
       Host: tmaxh1
      
       HTTP/1.1 200 OK
       Date: Wed, 31 Oct 2001 07:46:20 GMT
       Server: WebtoB/3.0
       Retry-After: 5000
       Content-Type: text/html
       Content-Length:       0
  • 관련 함수

    wbPutHdr()

3. wbSetStatus

wbSetStatus는 Response의 Status 값을 설정한다.

보통 클라이언트가 요구한 자료를 정상적으로 서버가 전달하게 되면, HTTP Status Code가 200 OK로 가게 된다. 만약 데이터가 없는 경우라면 404 Not Found로 가게 될 것이다. 이러한 일반적인 Status Code들은 대부분 웹 서버에서 내부적으로 처리하게 되지만, 만약 Location Field 등을 이용하여 자료의 위치를 옮기게 된 경우라면, HTTP Redirect 등의 Status Code 등을 전달하여 줄 수 있다. 이러한 특정 Status Code 값을 설정할 수 있게 하는 함수로 다른 PUT 계열 함수보다 먼저 수행되어야한다. 이는 wbSetStatus() 함수로 Response 헤더를 먼저 작성하기 위해서이다. 이러한 순서를 지켜 주어야 WBAPI가 문제없이 수행된다.

인수 status는 Response할 Status Code를 설정하고, status_msg는 Status Code 다음에 설정되는 reason을 사용자가 설정할 값으로 변경할 수 있도록 한다. status_msg의 값을 NULL로 설정하면 기본값이 설정된다. wbSetStatus() 함수로 특정 Status Code가 설정될 때에 클라이언트에게 특정 화면을 보여줄 수 있다.

wbSendError() 함수가 기본 메시지에 사용자가 설정한 간단한 메시지를 추가로 덧붙이는데 사용된다면 wbSetStatus() 함수는 클라이언트에게 HTML 형식의 메시지를 보여주는데 사용할 수 있다. 즉, wbSetStatus() 함수로 Status Code를 설정한 후 PUT 계열 함수를 이용하여 HTML 형식을 설정하면 클라이언트에게 설정된 HTML 형식의 출력을 보여줄 수 있게된다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    int wbSetStatus(WBSVCINFO *rqst, int status, char *status_msg)
  • 반환값

    함수가 정상적으로 수행될 경우 wbSetStatus()은 1을 반환한다. 에러가 발생하는 경우는 –1을 반환한다.

  • 예제

    <wbsetstatus.m>

    *DOMAIN
    webtob1
    
    *NODE
     tmaxh1         WEBTOBDIR="/user2/haninho/webtob",
                    SHMKEY = 54777,
                    DOCROOT="/user2/haninho/webtob/docs",
                    APPDIR="/user2/haninho/webtob/ap",
                    PORT = “7654”
    
    *SVRGROUP
     htmlg          NODENAME = "tmaxh1", SvrType = HTML
     webapg         NODENAME = "tmaxh1", SVRTYPE = WEBSTD
    
    *SERVER
     html           SVGNAME = htmlg, MinProc = 1, MaxProc =2
     wbsetstatus    SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
    *SERVICE
     test           SVRNAME = wbsetstaus
    
    *URI
     wbapi          Uri = "/svct/", S1vrtype = WEBSTD
    
    *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

      $wscfl –i wbsetstatus.m
    2. 서비스 테이블을 생성한다.

      $wsgst
    3. 소스 파일을 생성한다. 다음은 요청을 처리하는 WBAPI 프로그램 예제로 파일명은 wbsetstatus.c이다.

       #include<stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst)
       {
       wbSetStatus(rqst, 404, NULL);
       wbPrint(rqst, "<HTML><HEAD><TITLE>Not Found</TITLE></HEAD>");
       wbPrint(rqst, "<BODY><H1>Sorry, File is not Found!!!</H1>");
       wbPrint(rqst, "</BODY></HTML>");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

      $compile c wbsetstatus
    5. 다음은 결과 출력에 대한 예이다.

      Telnet으로 WBAPI service를 호출하면 다음과 같은 결과가 나온다.

       $telnet 61.77.153.5 7654
       Trying 61.77.153.5...
       Connected to 61.77.153.5.
       Escape character is '^]'.
       GET /svct/test HTTP/1.1
       Host: tmaxh1
       HTTP/1.1 404  
       Date: Wed, 31 Oct 2001 07:58:40 GMT
       Server: WebtoB/3.0
       Content-Type: text/html
       Content-Length:      99
       <HTML><HEAD><TITLE>Not Found</TITLE></HEAD><BODY><H1>Sorry,
       File is not Found!!!</H1></BODY></HTML>
  • 관련 함수

    wbSendError()

4. wbPutStr

wbPutStr은 String 값을 출력한다.

사용자가 요구한 사항에 대한 처리를 끝낸 후 출력하는 함수이다. 단, 데이터를 출력하는 단위가 String 라는 것에 주의하여야 한다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    int wbPutStr(WBSVCINFO *rqst, char *value)
  • 반환값

    함수가 정상적으로 수행될 경우 wbPutStr()은 1을 반환한다. 에러가 발생하는 경우는 –1을 반환한다.

  • 예제

    <wbputstr.m>

    *DOMAIN
    webtob1
    
    *NODE
     tmaxh1         WEBTOBDIR="/user2/haninho/webtob",
                    SHMKEY = 54777,
                    DOCROOT="/user2/haninho/webtob/docs",
                    APPDIR="/user2/haninho/webtob/ap",
                    PORT = “7654”
    
    *SVRGROUP
     htmlg          NODENAME = "tmaxh1", SvrType = HTML
     webapg         NODENAME = "tmaxh1", SVRTYPE = WEBSTD
    
    *SERVER
     html           SVGNAME = htmlg, MinProc = 1, MaxProc =2
     wbputstr       SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
    *SERVICE
     test           SVRNAME = wbputstr
    
    *URI
     wbapi          Uri = "/svct/", S1vrtype = WEBSTD
    
    *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

      $wscfl –i wbputstr.m
    2. 서비스 테이블을 생성한다.

      $wsgst
    3. 소스 파일을 생성한다. 다음은 요청을 처리하는 WBAPI 프로그램 예제로 파일명은 wbputstr.c이다.

       #include<stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst)
       {
       wbPutStr(rqst, "this wbPutStr() test!!<br>");
       wbPutStr(rqst, "this wbPutStr() test!!<br>");
       wbPutStr(rqst, "this wbPutStr() test!!\n");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

      $compile c wbputstr
    5. 다음은 결과가 출력된 화면이다.

      브라우저로 WBAPI 서비스를 호출하면 다음과 같은 결과가 나온다.

      image

  • 관련 함수

    wbPut(), wbPrint()

5. wbPut

wbPut은 특정 Size만큼의 데이터를 출력한다.

wbPutStr() 함수와 같은 기능을 하지만 데이터를 출력하는 단위가 String이 아니고, 함수의 인자로 주어지는 len의 크기만큼 출력된다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    int wbPut(WBSVCINFO *rqst, char *value, int len)
  • 반환값

    함수가 정상적으로 수행될 경우 wbPut()은 1을 반환한다. 에러가 발생하는 경우는 –1을 반환한다.

  • 예제

    <wbput.m>

    *DOMAIN
    webtob1
    
    *NODE
     tmaxh1         WEBTOBDIR="/user2/haninho/webtob",
                    SHMKEY = 54777,
                    DOCROOT="/user2/haninho/webtob/docs",
                    APPDIR="/user2/haninho/webtob/ap",
                    PORT = “7654”
    
    *SVRGROUP
     htmlg          NODENAME = "tmaxh1", SvrType = HTML
     webapg         NODENAME = "tmaxh1", SVRTYPE = WEBSTD
    
    *SERVER
     html           SVGNAME = htmlg, MinProc = 1, MaxProc =2
     wbput          SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
    *SERVICE
     test           SVRNAME = wbput
    
    *URI
     wbapi          Uri = "/svct/", S1vrtype = WEBSTD
    
    *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

      $wscfl –i wbput.m
    2. 서비스 테이블을 생성한다.

      $wsgst
    3. 소스 파일을 생성한다. 다음은 요청을 처리하는 WBAPI 프로그램 예제로 파일명은 wbput.c이다.

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst)
       {
       wbPut(rqst, "this wbPut() test!!", 19);
       wbPut(rqst, "this wbPut() test!!",10);
       wbPut(rqst, "this wbPut() test!!", 5);  
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

      $compile c wbput
    5. 다음은 결과가 출력된 화면이다.

      브라우저로 WBAPI 서비스를 호출하면 다음과 같은 결과가 나온다.

      image

  • 관련 함수

    wbPutStr(), wbPrint()

6. wbPrint

wbPrint는 사용자가 지정한 내용을 출력한다.

이 함수는 C 언어의 printf() 함수를 연상하면 쉽게 이해 할 수 있다. wbPrint()함수는 C 언어로 프로그램을 작성하던 사람들에게 가장 익숙한 함수인 printf() 함수를 대치하기 위해 만들어진 것이다. 따라서 함수의 프로토타입도 printf() 함수와 같다. ” “ 안에 원하는 문장을 넣고, 이 곳에 %s, %d, %f 등의 인자들을 넣고 이에 해당하는 변수를 적어 넣어서 출력을 한다. 또한, 개행 문자 등도 그대로 사용 가능하며, 기존 C 언어로 만들어진, printf() 함수를 그대로 이름만 바꾸어 사용할 수 있다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    int wbPrint(WBSVCINFO *rqst, const char * fmt, …..)
  • 반환값

    함수가 정상적으로 수행될 경우 wbPrint()은 1을 반환한다. 에러가 발생하는 경우는 –1을 반환한다.

  • 예제

    <wbprint.m>

    *DOMAIN
    webtob1
    
    *NODE
     tmaxh1         WEBTOBDIR="/user2/haninho/webtob",
                    SHMKEY = 54777,
                    DOCROOT="/user2/haninho/webtob/docs",
                    APPDIR="/user2/haninho/webtob/ap",
                    PORT = “7654”
    
    *SVRGROUP
     htmlg          NODENAME = "tmaxh1", SvrType = HTML
     webapg         NODENAME = "tmaxh1", SVRTYPE = WEBSTD
    
    *SERVER
     html           SVGNAME = htmlg, MinProc = 1, MaxProc =2
     wbprint        SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
    *SERVICE
     test           SVRNAME = wbprint
    
    *URI
     wbapi          Uri = "/svct/", S1vrtype = WEBSTD
    
    *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

      $wscfl –i wbprint.m
    2. 서비스 테이블을 생성한다.

      $wsgst
    3. 소스 파일을 생성한다. 다음은 요청을 처리하는 WBAPI 프로그램 예제로 파일명은 wbprint.c이다.

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst) {
       wbPrint(rqst, "<HTML>\n");
       wbPrint(rqst, "<BODY>\n");
       wbPrint(rqst, "Input QueryString :<INPUT TYPE = text NAME=query VALUE=\"\">");
       wbPrint(rqst, "<INPUT TYPE = submit VALUE=\"submit\">\n");
       wbPrint(rqst, "<H1>srting : %s</h1><br>","example");
       wbPrint(rqst, "<H1>character : %c</h1><br>",'e');
       wbPrint(rqst, "<H1>inteter : %d</h1><br>",100);
       wbPrint(rqst, "</FORM>\n");
       wbPrint(rqst, "</BODY>\n");
       wbPrint(rqst, "</HTML>\n");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

      $compile c wbprint
    5. 다음은 결과가 출력된 화면이다.

      브라우저로 WBAPI 서비스를 호출하면 다음과 같은 결과가 나온다.

      image

  • 관련 함수

    wbPutStr(), wbPut()

7. wbPutFile

wbPutFile은 File Download를 위한 함수로, 특정 파일을 읽어 들여 모두 브라우저로 보내준다.

클라이언트가 서버에 요구를 보낸 경우, 이에 대한 응답으로 서버가 특정한 파일을 전송하거나 웹에서 자료를 공유하고자 할 때 필요한 기능이다. WebtoB에서는 이런 기능을 위하여 wbPutFile() 이란 함수를 제공하는데, 특정 Physical Path를 지정하여 이 곳에 존재하는 파일을 클라이언트에게 전송한다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    int wbPutFile(WBSVCINFO *rqst, char *path)
  • 반환값

    함수가 정상적으로 수행될 경우 wbPutFile()은 1을 반환한다. 에러가 발생하는 경우는 –1을 반환한다.

  • 예제

    <wbputfile.m>

    *DOMAIN
    webtob1
    
    *NODE
     tmaxh1         WEBTOBDIR="/user2/haninho/webtob",
                    SHMKEY = 54777,
                    DOCROOT="/user2/haninho/webtob/docs",
                    APPDIR="/user2/haninho/webtob/ap",
                    PORT = “7654”
    
    *SVRGROUP
     htmlg          NODENAME = "tmaxh1", SvrType = HTML
     webapg         NODENAME = "tmaxh1", SVRTYPE = WEBSTD
    
    *SERVER
     html           SVGNAME = htmlg, MinProc = 1, MaxProc =2
     wbputfile      SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
    *SERVICE
     test           SVRNAME = wbputfile
    
    *URI
     wbapi          Uri = "/svct/", S1vrtype = WEBSTD
    
    *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

      $wscfl –i wbputfile.m
    2. 서비스 테이블을 생성한다.

      $wsgst
    3. 소스 파일을 생성한다.

      다음은 요청을 보내는 html 파일의 예제이다.

      <putfile.html>

      <html>
      <head><title> wbPutFile test </title></head>
      <body>
      <H2>wbPutFile</H2>
      <form action= "/svct/test" method=post>
      <input type= submit value=" Download ">
      </form>
      </body>
      </html>

      다음은 요청을 처리하는 WBAPI 프로그램 예제이다.

      <putfile.c>

       #include<stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst)
       {
       char line[50];
       memset(line, 0x00, sizeof(line));
       wbPutHdr(rqst, "content-type", "application/octet-stream");
       sprintf(line, "attachment; filename=%s", "session.c");
       wbPutHdr(rqst, "content-disposition", line);
       wbPutFile(rqst, "/user2/haninho/webtob/session.c");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

      $compile c wbputfile
    5. 다음은 결과가 출력된 화면이다.

      image

      브라우저로 WBAPI 서비스를 요청하면 DownLoad 여부를 묻는 화면이 나타난다.

      image

      DownLoad 위치를 설정하는 화면이 나타난다.

      image

      지정된 경로에 파일이 DownLoad된다.

  • 관련 함수

    wbPutPartialFile()

8. wbPutPartialFile

wbPutPartialFile은 File Download를 위한 함수로 특정 파일의 일부분을 읽어서 브라우저로 보내준 File의 offset부터 size만큼을 읽어 들여 보내준다. size가 0 이면 파일 끝까지 읽어 보내준다.

앞에서 설명한 wbPutFile() 함수와 같은 기능을 한다고 생각하면 된다. 단, 이 함수는 특정 파일의 일부분을 전송하는데 이용한다. 만약 클라이언트가 파일을 전송 받다가 네트워크의 불안정 등의 상황으로 인하여 접속이 끊겨서 차후에 다시 전송을 받으려 할 때 처음부터 다시 시작하는 것 보다는 이미 전송받은 것 이후의 데이터를 전송하는 것이 훨씬 경제적이고 빠를 것이다. 이런 경우에 이 함수를 이용하면 된다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    int wbPutPartialFile(WBSVCINFO *rqst,char *path,int offset,int sz)
  • 반환값

    함수가 정상적으로 수행될 경우 wbPutPartialFile()은 1을 반환한다. 에러가 발생하는 경우는 –1을 반환한다.

  • 예제

    <wbpartial.m>

    *DOMAIN
    webtob1
    
    *NODE
     tmaxh1         WEBTOBDIR="/user2/haninho/webtob",
                    SHMKEY = 54777,
                    DOCROOT="/user2/haninho/webtob/docs",
                    APPDIR="/user2/haninho/webtob/ap",
                    PORT = “7654”
    
    *SVRGROUP
     htmlg          NODENAME = "tmaxh1", SvrType = HTML
     webapg         NODENAME = "tmaxh1", SVRTYPE = WEBSTD
    
    *SERVER
     html           SVGNAME = htmlg, MinProc = 1, MaxProc =2
     wbpartial      SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
    *SERVICE
     test           SVRNAME = wbpartial
    
    *URI
     wbapi         Uri = "/svct/", S1vrtype = WEBSTD
    
    *EXT
     htm           MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

      $wscfl –i wbpartial.m
    2. 서비스 테이블을 생성한다.

      $wsgst
    3. 소스 파일을 생성한다.

      다음은 요청을 보내는 html 파일의 예제이다.

      <wbpartial.html>

      <html>
      <head><title> wbPutPartialFile test </title></head>
      <body>
      <H2>wbPutPartialFile</H2>
      <form action= "/svct/test" method=post>
      <input type= submit value=" Download ">
      </form>
      </body>
      </html>

      다음은 요청을 처리하는 WBAPI 프로그램 예제이다.

      <wbpartial.c>

       #include<stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
      
       test(WBSVCINFO *rqst) {
       char line[50];
       memset(line, 0x00, sizeof(line));
       wbPutHdr(rqst, "content-type", "application/octet-stream");
       sprintf(line, "attachment; filename=%s", "session.c");
       wbPutHdr(rqst, "content-disposition", line);
       wbPutPartialFile(rqst, "/user2/haninho/webtob/session.c",100, 100);
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

      $compile c wbpartial
    5. 다음은 결과가 출력된 화면이다.

      image

      브라우저로 WBAPI 서비스를 요청하면 DownLoad 여부를 묻는 화면이 나타난다.

      image

      DownLoad 위치를 설정하는 화면이 나타난다.

      image

      저장후 원하는 size만큼만 DownLoad 되었다면 정상적으로 수행된 것이다.

  • 관련 함수

    wbPutFile()