GET API

1. wbGetAuthType

wbGetAuthType()은 클라이언트의 인증 방식을 알아내는 함수로 CGI 환경변수 “AUTH_TYPE”에 해당하는 정보를 반환한다. 즉, wbGetAuthType() 함수는 클라이언트가 인증 방식을 확인하고자 하는 경우에 유용하게 사용할 수 있다. wbGetAuthType()은 인증 타입을 반환하며 만약 인증 방식을 사용하지 않고 있다면 NULL을 반환한다.

현재 WebtoB에서 사용 가능한 인증 방식은 Basic이다.

wbGetAuthType() 함수와 아래 “관련 함수”에 설정된 함수들과 같이 사용할 때 이 함수들은 버퍼를 같이 사용하게 되므로 반환된 값을 String Copy를 하지 않으면 마지막에 반환된 값이 출력된다. 그러므로 String Copy를 이용할 것을 권장한다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    char *wbGetAuthType(WBSVCINFO *rqst)
  • 반환값

    인증을 사용하는 경우에 그 인증 타입을 반환한다. 그러나 인증을 사용하지 않을 경우에는 NULL을 반환한다.

  • 예제

    <wbauth.m>

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

      $ wscfl –i wbauth.m

      wsmkpw를 이용하여 id와 password를 저장한 파일을 생성한다.

      $wsmkpw –p haninho haninho pwfile
    2. 서비스 테이블을 생성한다.

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

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst) {
       char *auth_type;
       auth_type = wbGetAuthType(rqst);
       wbPrint(rqst, "<HTML><BODY>");
       if(auth_type==NULL)
       {
               wbPrint(rqst, "<H1>Not used Authentication</H1>");
       }
       else
       {
               wbPrint(rqst, "<H1>AuthType : %s</H1>", auth_type);
       }
       wbPrint(rqst, "</BODY></HTML>");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

      인증 타입을 구별하는 WBAPI 인증 타입을 사용하지 않았기 때문에 다음과 같은 결과가 나온다.

      image

  • 관련 함수

    wbGetContentLength(), wbGetDocumentRoot(), wbGetMethod(), wbGetParsedURI(), wbGetPathInfo(), wbGetPathTranslated(), wbGetProtocol(), wbGetQueryString(), wbGetRemoteAddr(), wbGetRemoteHost(), wbGetRemoteIdent(), wbGetRemoteUser(), wbGetRequestURI(), wbGetScheme(), wbGetScriptFilename(), wbGetScriptName(), wbGetServerName(), wbGetServerPort(), wbGetServerSoftware(), wbGetTranslatedURI()

2. wbGetContentLength

wbGetContentLength는 클라이언트가 보낸 Content의 크기를 반환한다. wbGetContentLength()는 CGI 환경변수 “CONTENT_LENGTH”에 해당하는 정보를 얻어내는데 사용되는 함수이다.

wbGetContentLength() 함수와 아래 “관련 함수”에 설정된 함수들과 같이 사용할 때 이 함수들은 버퍼를 같이 사용하게 되므로 반환된 값을 String Copy를 하지 않으면 마지막에 반환된 값이 출력된다. 그러므로 String Copy를 이용할 것을 권장한다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    char *wbGetContentLength(WBSVCINFO *rqst)
  • 반환값

    클라이언트가 보낸 Content의 크기를 반환한다.

  • 예제

    <wbcontent.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
     wbcontent      SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
    *SERVICE
     test           SVRNAME = wbcontent
    
    *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
    *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

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

      <wbcontent.html>

      <html>
      <head><title>CONTENT LENGTH</title></head>
      <body>
      <form method=post action="/svct/test">
      <table width=370>
      <br>
      <tr>
      <td> input name</td>
      <td><input type=input name=name></td>
      <td><input type=submit value="submit"></td>
      </tr>
      </table>
      </form>
      </body>
      </html>

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

      <wbcontent.c>

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst)
       {
       char *content_length;
       content_length = wbGetContentLength(rqst);
       wbPrint(rqst, "<HTML><BODY>");
       if( content_length != NULL)
       {
       wbPrint(rqst, "<H1>CONTENT_LENGTH : %s</H1>", content_length);
       }
       else
       {
       wbPrint(rqst, "<H1>CONTENT IS NULL</H1>");
       }
       wbPrint(rqst, "</Body></html>");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

      image

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

      image

  • 관련 함수

    wbGetAuthType(), wbGetDocumentRoot(), wbGetMethod(), wbGetParsedURI(), wbGetPathInfo(), wbGetPathTranslated(), wbGetProtocol(), wbGetQueryString(), wbGetRemoteAddr(), wbGetRemoteHost(), wbGetRemoteIdent(), wbGetRemoteUser(), wbGetRequestURI(), wbGetScheme(), wbGetScriptFilename(), wbGetScriptName(), wbGetServerName(), wbGetServerPort(), wbGetServerSoftware(), wbGetTranslatedURI()

3. wbGetDocumentRoot

wbGetDocumentRoot는 WebtoB의 Home 디렉터리의 값을 반환한다. 이 함수의 반환값은 WebtoB 환경 설정할 때 사용자가 NODE 절의 DocRoot 항목에 설정한 값과 동일하다.

wbGetDocumentRoot() 함수와 아래 “관련 함수”에 설정된 함수들과 같이 사용할 때 이 함수들은 버퍼를 같이 사용하게 되므로 반환된 값을 String Copy를 하지 않으면 마지막에 반환된 값이 출력된다. 그러므로 String Copy를 이용할 것을 권장한다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    char *wbGetDocumentRoot(WBSVCINFO *rqst)
  • 반환값

    WebtoB의 Home 디렉터리의 값을 반환한다.

  • 예제

    <docroot.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
     wbdocroot      SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
    *SERVICE
     test           SVRNAME = wbdocroot
    
    *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
    *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst)
       {
       char *document_root;
       document_root = wbGetDocumentRoot(rqst);
       wbPutHdr(rqst, "Content-type", "text/html");
       wbPrint(rqst, "<HTML><BODY>");
       wbPrint(rqst, "<H1>DocumentRoot : %s</H1>", document_root);
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

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

      image

  • 관련 함수

    wbGetAuthType(), wbGetContentLength(), wbGetMethod(), wbGetParsedURI(), wbGetPathInfo(), wbGetPathTranslated(), wbGetProtocol(), wbGetQueryString(), wbGetRemoteAddr(), wbGetRemoteHost(), wbGetRemoteIdent(), wbGetRemoteUser(), wbGetRequestURI(), wbGetScheme(), wbGetScriptFilename(), wbGetScriptName(), wbGetServerName(), wbGetServerPort(), wbGetServerSoftware(), wbGetTranslatedURI()

4. wbGetMethod

wbGetMethod는 HTTP Method 값을 반환한다. wbGetMethod()는 실제 사용자가 요구한 Method를 String 형태로 출력한다.

wbGetMethod() 함수와 아래 “관련 함수”에 설정된 함수들과 같이 사용할 때 이 함수들은 버퍼를 같이 사용하게 되므로 반환된 값을 String Copy를 하지 않으면 마지막에 반환된 값이 출력된다. 그러므로 String Copy를 이용할 것을 권장한다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    char *wbGetMethod(WBSVCINFO *rqst)
  • 반환값

    해당하는 Method를 String 형태로 반환한다.

    반환값 설 명

    [GET]

    클라이언트가 Request를 보낸 HTTP Method는 GET Method이다.

    [POST]

    클라이언트가 Request를 보낸 HTTP Method는 POST Method이다.

    [PUT]

    클라이언트가 Request를 보낸 HTTP Method는 PUT Method이다.

    [HEAD]

    클라이언트가 Request를 보낸 HTTP Method는 HEAD Method이다.

    [DELETE]

    클라이언트가 Request를 보낸 HTTP Method는 DELETE Method이다.

    [CONNECT]

    클라이언트가 Request를 보낸 HTTP Method는 CONNECT Method이다.

    [OPTIONS]

    클라이언트가 Request를 보낸 HTTP Method는 OPTIONS Method이다.

    [TRACE]

    클라이언트가 Request를 보낸 HTTP Method는 TRACE Method이다.

    [INVALID]

    인수가 유효하지 않다. wbapi.h에서 정의되지 않은 Method이다.

  • 예제

    <wbmethod.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
     wbmethod       SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
    *SERVICE
     test           SVRNAME = wbmethod
    
    *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
    *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

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

      <wbmethod.html>

      <html>
      <head><title>WBGETMETHOD</title></head>
      <body>
      <form method=post action="/svct/test">
      <table width=370>
      <br>
      <tr>
      <td> input name</td>
      <td><input type=input name=name></td>
      <td><input type=submit value="submit"></td>
      </tr>
      </table>
      </form>
      </body>
      </html>

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

      <wbmethod.c>

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst)
       {
       char *method_name;
       method_name = wbGetMethod(rqst);
       wbPutHdr(rqst, "Content-type", "text/html");
       wbPrint(rqst, "<HTML><BODY>");
       if( method_name != NULL) {
               wbPrint(rqst, "<H1>method name : %s</H1>", method_name);
       }
       else {
               wbPrint(rqst, "<H1>method name is null</H1>");
       }
       wbPrint(rqst, "</body></html>");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

      image

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

      image

  • 관련 함수

    wbGetAuthType(), wbGetContentLength(), wbGetDocumentRoot(), wbGetParsedURI(), wbGetPathInfo(), wbGetPathTranslated(), wbGetProtocol(), wbGetQueryString(), wbGetRemoteAddr(), wbGetRemoteHost(), wbGetRemoteIdent(), wbGetRemoteUser(), wbGetRequestURI(), wbGetScheme(), wbGetScriptFilename(), wbGetScriptName(), wbGetServerName(), wbGetServerPort(), wbGetServerSoftware(), wbGetTranslatedURI()

5. wbGetParsedURI

wbGetParsedURI는 클라이언트로부터 Request가 들어온 URI 정보를 반환한다. wbGetScriptName() 함수와 wbGetPathInfo() 함수로 얻어낼 수 있는 모든 정보를 반환한다.

예를 들어 클라이언트가 주소창에 “http://tmax.co.kr/enc.cgi/a/b”라고 입력한다면 wbGetParsedURI()는 부가 경로 정보인 “/enc.cgi/a/b”를 반환한다. 만약 어떠한 정보도 없다면 NULL을 반환한다.

wbGetParsedURI() 함수와 아래 “관련 함수”에 설정된 함수들과 같이 사용할 때 이 함수들은 버퍼를 같이 사용하게 되므로 반환된 값을 String Copy를 하지 않으면 마지막에 반환된 값이 출력된다. 그러므로 String Copy를 이용할 것을 권장한다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    char *wbGetParsedURI(WBSVCINFO *rqst)
  • 반환값

    클라이언트로부터 Request가 들어온 URI 정보를 반환한다.

  • 예제

    <wburi.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
     wburi          SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
    *SERVICE
     test           SVRNAME = wburi
    
    *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
    *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst)
       {
       char *parsed_uri;
       parsed_uri = wbGetParsedURI(rqst);
       wbPutHdr(rqst, "Content-type", "text/html");
       wbPrint(rqst, "<HTML><BODY>");
       wbPrint(rqst, "<H1>URI : %s</H1>", parsed_uri);
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

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

      image

  • 관련 함수

    wbGetAuthType(), wbGetContentLength(), wbGetDocumentRoot(), wbGetMethod(), wbGetPathInfo(), wbGetPathTranslated(), wbGetProtocol(), wbGetQueryString(), wbGetRemoteAddr(), wbGetRemoteHost(), wbGetRemoteIdent(), wbGetRemoteUser(), wbGetRequestURI(), wbGetScheme(), wbGetScriptFilename(), wbGetScriptName(), wbGetServerName(), wbGetServerPort(), wbGetServerSoftware(), wbGetTranslatedURI()

6. wbGetPathInfo

wbGetPathInfo는 Request와 관계된 상대 경로 정보를 반환한다. wbGetPathInfo()는 CGI 환경변수 중 “PATH_INFO”에 해당하는 정보를 얻어내는 함수이다.

예를 들어 클라이언트가 주소창에 “http://tmax.co.kr/enc.cgi/a/b”라고 입력한다면 wbGetPathInfo()는 부가 경로 정보인 “/a/b”를 반환한다. 만약 어떠한 정보도 없다면 NULL을 반환한다.

wbGetPathInfo() 함수와 아래 “관련 함수”에 설정된 함수들과 같이 사용할 때 이 함수들은 버퍼를 같이 사용하게 되므로 반환된 값을 String Copy를 하지 않으면 마지막에 반환된 값이 출력된다. 그러므로 String Copy를 이용할 것을 권장한다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    char *wbGetPathInfo(WBSVCINFO *rqst)
  • 반환값

    Request와 관계된 부가의 경로 정보를 반환한다. 만약 어떠한 정보도 없다면 NULL을 반환한다.

  • 예제

    <wbpath.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
     wbpath        SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
    *SERVICE
     test          SVRNAME = wbpath
    
    *URI
     wbapi         Uri = "/svct/", Svrtype = WEBSTD
    
    *EXT
     htm           MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
      
       test(WBSVCINFO *rqst) {
       char *path;
       path = wbGetPathInfo(rqst);
       wbPutHdr(rqst, "Content-type", "text/html");
       wbPrint(rqst, "<HTML><BODY>");
       if(path != NULL) {
       wbPrint(rqst, "<H1>PATH : %s</H1>", path);
       }
       else {
       wbPrint(rqst, "<H1>PATH is null</H1>");
       }
       wbPrint(rqst, "</body></html>");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

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

      image

      브라우저로 http://61.77.153.5:7654/svct/test/a/b와 같이 WBAPI 서비스를 호출하면 다음과 같은 결과가 나온다.

      image

  • 관련 함수

    wbGetAuthType(), wbGetContentLength(), wbGetDocumentRoot(), wbGetMethod(), wbGetParsedURI(), wbGetPathTranslated(), wbGetProtocol(), wbGetQueryString(), wbGetRemoteAddr(), wbGetRemoteHost(), bGetRemoteIdent(), wbGetRemoteUser(), wbGetRequestURI(), wbGetScheme(), wbGetScriptFilename(), wbGetScriptName(), bGetServerName(), wbGetServerPort(), bGetServerSoftware(), bGetTranslatedURI()

7. wbGetPathTranslated

wbGetPathTranslated Request와 관계된 서비스의 실제 경로를 반환한다. wbGetPathTranslated()는 CGI 환경변수중 “PATH_TRANSLATED”에 해당하는 정보를 얻어내는 함수이다.

wbGetPathTranslated() 함수와 아래 “관련 함수”에 설정된 함수들과 같이 사용할 때 이 함수들은 버퍼를 같이 사용하게 되므로 반환된 값을 String Copy를 하지 않으면 마지막에 반환된 값이 출력된다. 그러므로 String Copy를 이용할 것을 권장한다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    char *wbGetPathTranslated(WBSVCINFO *rqst)
  • 반환값

    Request와 관계된 부가의 경로 정보를 반환한다. 만약 어떠한 정보도 없다면 NULL을 반환한다.

  • 예제

    <wbpathtrans.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
     wbpathtrans    SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
    *SERVICE
     test           SVRNAME = wbpathtrans
    
    *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
    *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst)
       {
       char *pathtrans;
       pathtrans = wbGetPathTranslated(rqst);
       wbPutHdr(rqst, "Content-type", "text/html");
       wbPrint(rqst, "<HTML><BODY>");
       if(pathtrans != NULL){
       wbPrint(rqst, "<H1>PATHTRANS : %s</H1>", pathtrans);
       }
       else {
       wbPrint(rqst, "<H1>PATHTRANS is null</H1>");
       }
       wbPrint(rqst, "</body></html>");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

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

      image

      브라우저로 http://61.77.153.5:7654/svct/test/a/b와 같이 WBAPI 서비스를 호출하면 다음과 같은 결과가 나온다.

      image

  • 관련 함수

    wbGetAuthType(), wbGetContentLength(), wbGetDocumentRoot(), wbGetMethod(), wbGetParsedURI(), wbGetPathInfo(), wbGetProtocol(), wbGetQueryString(), wbGetRemoteAddr(), wbGetRemoteHost(), wbGetRemoteIdent(), wbGetRemoteUser(), wbGetRequestURI(), wbGetScheme(), wbGetScriptFilename(), wbGetScriptName(), wbGetServerName(), wbGetServerPort(), wbGetServerSoftware(), wbGetTranslatedURI()

8. wbGetProtocol

wbGetProtocol은 Request와 관계된 프로토콜 정보를 반환한다. wbGetProtocol()는 CGI 환경변수 중 “SERVER_PROTOCOL”에 해당하는 정보를 얻어내는 함수이다.

wbGetProtocol() 함수와 아래 “관련 함수”에 설정된 함수들과 같이 사용할 때 이 함수들은 버퍼를 같이 사용하게 되므로 반환된 값을 String Copy를 하지 않으면 마지막에 반환된 값이 출력된다. 그러므로 String Copy를 이용할 것을 권장한다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    int wbSvrInit(int argc, char *argv[])
  • 반환값

    Request와 관계된 프로토콜 정보를 반환한다. 관련된 정보가 없다면 NULL을 반환한다.

  • 예제

    <wbprotocol.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
     wbprotocol     SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
    *SERVICE
     test           SVRNAME = wbprotocol
    
    *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
    *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst)
       {
       char *protocol;
       protocol = wbGetProtocol(rqst);
       wbPutHdr(rqst, "Content-type", "text/html");
       wbPrint(rqst, "<HTML><BODY>");
       wbPrint(rqst, "<H1>protocol : %s</H1>", protocol);
       wbPrint(rqst, "</body></html>");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

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

      image

  • 관련 함수

    wbGetAuthType(), wbGetContentLength(), wbGetDocumentRoot(), wbGetMethod(), wbGetParsedURI(), wbGetPathInfo(), wbGetPathTranslated(), wbGetQueryString(), wbGetRemoteAddr(), wbGetRemoteHost(), wbGetRemoteIdent(), wbGetRemoteUser(), wbGetRequestURI(), wbGetScheme(), wbGetScriptFilename(), wbGetScriptName(), wbGetServerName(), wbGetServerPort(), wbGetServerSoftware(), wbGetTranslatedURI()

9. wbGetQueryString

wbGetQueryString은 Request URL로부터 질의어 문자열을 반환한다. 이 값은 CGI 변수 “QUERY_STRING”과 동일하다.

wbGetQueryString() 함수와 아래 “관련 함수”에 설정된 함수들과 같이 사용할 때 이 함수들은 버퍼를 같이 사용하게 되므로 반환된 값을 String Copy를 하지 않으면 마지막에 반환된 값이 출력된다. 그러므로 String Copy를 이용할 것을 권장한다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    char *wbGetQueryString(WBSVCINFO *rqst)
  • 반환값

    Request의 URL로부터 질의어 문자열을 반환한다.

  • 예제

    <wbquery.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
     wbquery        SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
     *SERVICE
     test1          SVRNAME = wbquery
    
     *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
     *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

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

      <wbquery.html>

      <html>
      <head><title>wbGetQueryString</title></head>
      <body>
      <form method=get action="/svct/test">
      <table width=370>
      <br>
      <tr>
      <td> input name</td>
      <td><input type=input name=name></td>
      <td><input type=submit value="submit"></td>
      </tr>
      </table>
      </form>
      </body>
      </html>

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

      <wbquery.c>

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst)
       {
       char *query;
       query = wbGetQueryString(rqst);
       wbPutHdr(rqst, "Content-type", "text/html");
       wbPrint(rqst, "<HTML><BODY>");
       if(query != NULL)
       {
       wbPrint(rqst, "<H1>QUERY : %s</H1>", query);
       }
       else
       {
       wbPrint(rqst, "<H1>QUERY is null</H1>");
       }
       wbPrint(rqst, "</body></html>");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

      image

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

      image

  • 관련 함수

    wbGetAuthType(), wbGetContentLength(), wbGetDocumentRoot(), wbGetMethod(), wbGetParsedURI(), wbGetPathInfo(), wbGetPathTranslated(), wbGetProtocol(), wbGetRemoteAddr(), wbGetRemoteHost(), wbGetRemoteIdent(), wbGetRemoteUser(), wbGetRequestURI(), wbGetScheme(), wbGetScriptFilename(), wbGetScriptName(), wbGetServerName(), wbGetServerPort(), wbGetServerSoftware(), wbGetTranslatedURI()

10. wbGetRemoteAddr

wbGetRemoteAddr은 Request 한 Remote Host의 IP를 반환한다. wbGetRemoteAddr()은 CGI 환경변수 “REMOTE_ADDR”에 해당하는 정보를 얻어내는데 사용되는 함수이다.

wbGetRemoteAddr() 함수와 아래 “관련 함수”에 설정된 함수들과 같이 사용할 때 이 함수들은 버퍼를 같이 사용하게 되므로 반환된 값을 String Copy를 하지 않으면 마지막에 반환된 값이 출력된다. 그러므로 String Copy를 이용할 것을 권장한다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    char *wbGetRemoteAddr(WBSVCINFO *rqst)
  • 반환값

    Request를 하는 클라이언트의 Remote Host의 IP를 반환한다.

  • 예제

    <wbremoteaddr.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
     wbremoteaddr   SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
     *SERVICE
     test           SVRNAME = wbremoteaddr
    
     *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
     *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

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

      <wbremoteaddr.html>

      <html>
      <head><title>wbGetRemoteAddr</title></head>
      <body>
      <form method=get action="/svct/test">
      <table width=370>
      <br>
      <tr>
      <td> input name</td>
      <td><input type=input name=name></td>
      <td><input type=submit value="submit"></td>
      </tr>
      </table>
      </form>
      </body>
      </html>

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

      <wbremoteaddr.c>

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst) {
       char *addr;
       addr = wbGetRemoteAddr(rqst);
       wbPutHdr(rqst, "Content-type", "text/html");
       wbPrint(rqst, "<HTML><BODY>");
       if(addr != NULL) {
       wbPrint(rqst, "REMOTE_ADDR : %s", addr);
       } else {
       wbPrint(rqst, "<H1>addr is null</H1>");
       }
       wbPrint(rqst, "</body></html>");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

      image

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

      image

  • 관련 함수

    wbGetAuthType(), wbGetContentLength(), wbGetDocumentRoot(), wbGetMethod(), wbGetParsedURI(), wbGetPathInfo(), wbGetPathTranslated(), wbGetProtocol(), wbGetQueryString(), wbGetRemoteHost(), wbGetRemoteIdent(), wbGetRemoteUser(), wbGetRequestURI(), wbGetScheme(), wbGetScriptFilename(), wbGetScriptName(), wbGetServerName(), wbGetServerPort(), wbGetServerSoftware(), wbGetTranslatedURI()

11. wbGetRemoteHost

wbGetRemoteHost는 Request 하는 Remote Host의 이름을 반환한다. wbGetRemoteHost()은 CGI환경변수 “REMOTE_HOST”에 해당하는 정보를 얻어내는데 사용되는 함수이다. 만약 이 정보가 Remote Host에 존재하지 않는다면 “REMOTE_ADDR”에 해당하는 정보를 반환한다.

wbGetRemoteHost() 함수와 아래 “관련 함수”에 설정된 함수들과 같이 사용할 때 이 함수들은 버퍼를 같이 사용하게 되므로 반환된 값을 String Copy를 하지 않으면 마지막에 반환된 값이 출력된다. 그러므로 String Copy를 이용할 것을 권장한다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    char *wbGetRemoteHost(WBSVCINFO *rqst)
  • 반환값

    Request 한 Remote Host의 hostname을 반환한다.

  • 예제

    <wbremotehost.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
     wbremotehost   SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
     *SERVICE
     test           SVRNAME = wbremotehost
    
     *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
     *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

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

      <wbremotehost.html>

      <html>
      <head><title>wbGetRemoteHost</title></head>
      <body>
      <form method=get action="/svct/test">
      <table width=370>
      <br>
      <tr>
      <td> input name</td>
      <td><input type=input name=name></td>
      <td><input type=submit value="submit"></td>
      </tr>
      </table>
      </form>
      </body>
      </html>

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

      <wbremotehost.c>

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst)
       {
       char *host;
       host = wbGetRemoteHost(rqst);
       wbPutHdr(rqst, "Content-type", "text/html");
       wbPrint(rqst, "<HTML><BODY>");
       if(host != NULL)
       {
       wbPrint(rqst, "REMOTE_HOST : %s", host);
       }
       else
       {
       wbPrint(rqst, "<H1>host is null</H1>");
       }
       wbPrint(rqst, "</body></html>");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

      image

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

      image

      wbGetRemoteHost()은 CGI환경변수 “REMOTE_HOST”에 해당하는 정보를 얻어내는데 사용되는 함수이다. 예제에서는 Remote Host에 대한 정보가 존재하지 않기 때문에 “REMOTE_ADDR”에 해당하는 정보를 반환 한다.

  • 관련 함수

    wbGetAuthType(), wbGetContentLength(), wbGetDocumentRoot(), wbGetMethod(), wbGetParsedURI(), wbGetPathInfo(), wbGetPathTranslated(), wbGetProtocol(), wbGetQueryString(), wbGetRemoteAddr(), wbGetRemoteIdent(), wbGetRemoteUser(), wbGetRequestURI(), wbGetScheme(), wbGetScriptFilename(), wbGetScriptName(), wbGetServerName(), wbGetServerPort(), wbGetServerSoftware(), wbGetTranslatedURI()

12. wbGetRemoteUser

wbGetRemoteUser는 Request 하는 클라이언트의 이름을 반환한다. 만약 WebtoB에 접근하는데 제한이 없다면 NULL값을 반환한다. CGI 변수 REMOTE_USER와 동일하다. 이것은 일반적으로 클라이언트가 HTTP 인증을 통해 로그인했다는 것을 말한다.

wbGetRemoteUser() 함수와 아래 “관련 함수”에 설정된 함수들과 같이 사용할 때 이 함수들은 버퍼를 같이 사용하게 되므로 반환된 값을 String Copy를 하지 않으면 마지막에 반환된 값이 출력된다. 그러므로 String Copy를 이용할 것을 권장한다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    char *wbGetRemoteUser(WBSVCINFO *rqst)
  • 반환값

    Request를 하는 클라이언트의 이름을 반환한다. 만약 WebtoB에 접근하는데 제한이 없다면 NULL을 반환한다.

  • 예제

    <wbremoteuser.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, Authentname = authent1
    
     *SERVER
     html           SVGNAME = htmlg, MinProc = 1, MaxProc =2
     wbremoteuser   SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
     *SERVICE
     test           SVRNAME = wbremoteuser
    
     *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
     *AUTHENT
     authent1       Type = Basic, UserFile = "/user2/haninho/webtob/pwfile"
    
     *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

      $wscfl –i wbremoteuser.m

      wsmkpw를 이용하여 id와 password를 저장한 파일을 생성한다.

      $wsmkpw –p haninho haninho pwfile
    2. 서비스 테이블을 생성한다.

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

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst) {
       char *user;
       user = wbGetRemoteUser(rqst); 
       wbPutHdr(rqst, "Content-type", "text/html");
       wbPrint(rqst, "<HTML><BODY>");
       if(user != NULL) {
       wbPrint(rqst, "REMOTE_USER : %s", user);
       } else {
       wbPrint(rqst, "<H1>user is null</H1>");
       }
       wbPrint(rqst, "</body></html>");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

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

      image

  • 관련 함수

    wbGetAuthType(), wbGetContentLength(), wbGetDocumentRoot(), wbGetMethod(), wbGetParsedURI(), wbGetPathInfo(), wbGetPathTranslated(), wbGetProtocol(), wbGetQueryString(), wbGetRemoteAddr(), wbGetRemoteHost(), wbGetRemoteIdent(), wbGetRequestURI(), wbGetScheme(), wbGetScriptFilename(), wbGetScriptName(), wbGetServerName(), wbGetServerPort(), wbGetServerSoftware(), wbGetTranslatedURI()

13. wbGetRequestURI

wbGetRequestURI는 Request의 URI(Universal Resource Identifier)를 반환한다. 이것은 도메인 이름을 제외한 모든 요청내용을 보여준다.

wbGetRequestURI() 함수와 아래 “관련 함수”에 설정된 함수들과 같이 사용할 때 이 함수들은 버퍼를 같이 사용하게 되므로 반환된 값을 String Copy를 하지 않으면 마지막에 반환된 값이 출력된다. 그러므로 String Copy를 이용할 것을 권장한다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    char *wbGetRequestURI(WBSVCINFO *rqst)
  • 반환값

    Request의 URI를 반환한다.

  • 예제

    <wbrequest.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
     wbrequest      SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
     *SERVICE
     test           SVRNAME = wbrequest
    
     *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
     *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst)
       {
       char *user;
       user = wbGetRequestURI(rqst); 
       wbPutHdr(rqst, "Content-type", "text/html");
       wbPrint(rqst, "<HTML><BODY>");
       if(user != NULL)
       {
       wbPrint(rqst, "REQUEST_URI : %s", user);
       } else {
       wbPrint(rqst, "<H1>uri is null</H1>");
       }
       wbPrint(rqst, "</body></html>");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

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

      image

  • 관련 함수

    wbGetAuthType(), wbGetContentLength(), wbGetDocumentRoot(), wbGetMethod(), wbGetParsedURI(), wbGetPathInfo(), wbGetPathTranslated(), wbGetProtocol(), wbGetQueryString(), wbGetRemoteAddr(), wbGetRemoteHost(), wbGetRemoteIdent(), wbGetRemoteUser(), wbGetScheme(), wbGetScriptFilename(), wbGetScriptName(), wbGetServerName(), wbGetServerPort(), wbGetServerSoftware(), wbGetTranslatedURI()

14. wbGetScheme

wbGetScheme은 Request된 서비스의 프로토콜 정보를 반환한다. 예를 들어 HTML 서비스를 이용한다면 wbGetScheme()는 ‘HTTP’를 반환하고 SSL 서비스를 이용한다면 ‘HTTPS’ 를 반환한다.

wbGetScheme() 함수와 아래 “관련 함수”에 설정된 함수들과 같이 사용할 때 이 함수들은 버퍼를 같이 사용하게 되므로 반환된 값을 String Copy를 하지 않으면 마지막에 반환된 값이 출력된다. 그러므로 String Copy를 이용할 것을 권장한다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    char *wbGetScheme(WBSVCINFO *rqst)
  • 반환값

    Request된 서비스의 프로토콜 정보를 반환한다.

  • 예제

    <wbscheme.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
     wbscheme       SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
     *SERVICE
     test           SVRNAME = wbscheme
    
     *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
     *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst) {
       char *sch;
       sch = wbGetScheme(rqst);    
       wbPutHdr(rqst, "Content-type", "text/html");
       wbPrint(rqst, "<HTML><BODY>");
       if(sch != NULL)
       {
       wbPrint(rqst, "scheme : %s", sch);
       }
       else
       {
       wbPrint(rqst, "<H1>scheme is null</H1>");
       }
       wbPrint(rqst, "</body></html>");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

      image

  • 관련 함수

    wbGetAuthType(), wbGetContentLength(), wbGetDocumentRoot(), wbGetMethod(), wbGetParsedURI(), wbGetPathInfo(), wbGetPathTranslated(), wbGetProtocol(), wbGetQueryString(), wbGetRemoteAddr(), wbGetRemoteHost(), wbGetRemoteIdent(), wbGetRemoteUser(), wbGetRequestURI(), wbGetScriptFilename(), wbGetScriptName(), wbGetServerName(), wbGetServerPort(), wbGetServerSoftware(), wbGetTranslatedURI()

15. wbGetScriptFilename

wbGetScriptFilename은 Request한 WBAPI 서비스가 실행되는 절대경로를 반환한다.

예를 들어 서비스가 실행되는 경로가 ‘/usr/local/webtob/ap/test’라면 wbGetScriptFilename()이 반환하는 값은 “/usr/local/webtob/ap/test”이다.

wbGetScriptFilename() 함수와 아래 “관련 함수”에 설정된 함수들과 같이 사용할 때 이 함수들은 버퍼를 같이 사용하게 되므로 반환된 값을 String Copy를 하지 않으면 마지막에 반환된 값이 출력된다. 그러므로 String Copy를 이용할 것을 권장한다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    char *wbGetScriptFilename(WBSVCINFO *rqst)
  • 반환값

    Request한 서비스가 실행되는 절대경로를 반환한다.

  • 예제

    <wbscriptfile.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
     webapg         NODENAME = "tmaxh1", SVRTYPE = WEBSTD
    
     *SERVICE
     test           SVRNAME = wbscriptfile
    
     *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
     *ALIAS
     alias          uri="/svct/", RealPath="/user2/haninho/webtob/svct/"
    
     *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst)
       {
       char *name;
       name = wbGetScriptFilename(rqst);
       wbPutHdr(rqst, "Content-type", "text/html");
       wbPrint(rqst, "<HTML><BODY>");
       if(name != NULL) {
       wbPrint(rqst, "Script Filename : %s", name);
       } else {
       wbPrint(rqst, "<H1>error</H1>");
       }
       wbPrint(rqst, "</body></html>");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

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

      image

  • 관련 함수

    wbGetAuthType(), wbGetContentLength(), wbGetDocumentRoot(), wbGetMethod(), wbGetParsedURI(), wbGetPathInfo(), wbGetPathTranslated(), wbGetProtocol(), wbGetQueryString(), wbGetRemoteAddr(), wbGetRemoteHost(), wbGetRemoteIdent(), wbGetRemoteUser(), wbGetRequestURI(), wbGetScheme(), wbGetScriptName(), wbGetServerName(), wbGetServerPort(), wbGetServerSoftware(), wbGetTranslatedURI()

16. wbGetScriptName

wbGetScriptName은 Request한 서비스가 실행되는 경로를 반환한다. wbGetScriptName()은 CGI환경변수 “SCRIPT_NAME”에 해당하는 정보를 얻어내는데 사용되는 함수이다.

wbGetScriptName() 함수와 아래 “관련 함수”에 설정된 함수들과 같이 사용할 때 이 함수들은 버퍼를 같이 사용하게 되므로 반환된 값을 String Copy를 하지 않으면 마지막에 반환된 값이 출력된다. 그러므로 String Copy를 이용할 것을 권장한다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    char *wbGetScriptName(WBSVCINFO *rqst)
  • 반환값

    Request한 파일의 절대경로를 반환한다.

  • 예제

    <wbscriptname.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
     wbscriptname   SVGNAME = webapg, MinProc = 1, MaxProc = 2 
    
     *SERVICE
     test           SVRNAME = wbscriptname
    
     *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
     *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst) {
       char *name;
       name = wbGetScriptName(rqst);
       wbPutHdr(rqst, "Content-type", "text/html");
       wbPrint(rqst, "<HTML><BODY>");
       if(name != NULL) {
       wbPrint(rqst, "Script Name : %s", name);
       } else {
       wbPrint(rqst, "<H1>error</H1>");
       }
       wbPrint(rqst, "</body></html>");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

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

      image

  • 관련 함수

    wbGetAuthType(), wbGetContentLength(), wbGetDocumentRoot(), wbGetMethod(), wbGetParsedURI(), wbGetPathInfo(), wbGetPathTranslated(), wbGetProtocol(), wbGetQueryString(), wbGetRemoteAddr(), wbGetRemoteHost(), wbGetRemoteIdent(), wbGetRemoteUser(), wbGetRequestURI(), wbGetScheme(), wbGetScriptFilename(), wbGetServerName(), wbGetServerPort(), wbGetServerSoftware(), wbGetTranslatedURI()

17. wbGetServerName

wbGetServerName은 서버의 hostname을 반환한다. wbGetServerName()은 CGI환경변수 “SERVER_NAME”에 해당하는 정보를 얻어내는데 사용되는 함수이다.

wbGetServerName() 함수와 아래 “관련 함수”에 설정된 함수들과 같이 사용할 때 이 함수들은 버퍼를 같이 사용하게 되므로 반환된 값을 String Copy를 하지 않으면 마지막에 반환된 값이 출력된다. 그러므로 String Copy를 이용할 것을 권장한다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    char *wbGetServerName(WBSVCINFO *rqst)
  • 반환값

    서버의 hostname을 반환한다.

  • 예제

    <wbservername.m>

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

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

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

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst)
       {
       char *name;
       name = wbGetServerName(rqst);
       wbPutHdr(rqst, "Content-type", "text/html");
       wbPrint(rqst, "<HTML><BODY>");
       if(name != NULL)
       {
       wbPrint(rqst, "Server Name : %s", name);
       }
       else
       {
       wbPrint(rqst, "<H1>error</H1>");
       }
       wbPrint(rqst, "</body></html>");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

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

      image

  • 관련 함수

    wbGetAuthType(), wbGetContentLength(), wbGetDocumentRoot(), wbGetMethod(), wbGetParsedURI(), wbGetPathInfo(), wbGetPathTranslated(), wbGetProtocol(), wbGetQueryString(), wbGetRemoteAddr(), wbGetRemoteHost(), wbGetRemoteIdent(), wbGetRemoteUser(), wbGetRequestURI(), wbGetScheme(), wbGetScriptFilename(), wbGetScriptName(), wbGetServerPort(), wbGetServerSoftware(), wbGetTranslatedURI()

18. wbGetServerPort

wbGetServerPort는 서버의 Port 번호를 반환한다. wbGetServerPort()은 CGI 환경변수 “SERVER_PORT”에 해당하는 정보를 얻어내는데 사용되는 함수이다.

wbGetServerPort() 함수와 아래 “관련 함수”에 설정된 함수들과 같이 사용할 때 이 함수들은 버퍼를 같이 사용하게 되므로 반환된 값을 String Copy를 하지 않으면 마지막에 반환된 값이 출력된다. 그러므로 String Copy를 이용할 것을 권장한다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    char *wbGetServerPort(WBSVCINFO *rqst)
  • 반환값

    서버의 Port 번호를 반환한다.

  • 예제

    <wbserverport.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
     wbserverport   SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
     *SERVICE
     test           SVRNAME = wbserverport
    
     *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
     *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst)
       {
       char *port;
       port = wbGetServerPort(rqst);
       wbPutHdr(rqst, "Content-type", "text/html");
       wbPrint(rqst, "<HTML><BODY>");
       if(port != NULL)
       {
       wbPrint(rqst, "Server Port : %s", port);
       }
       else
       {
       wbPrint(rqst, "<H1>error</H1>");
       }
       wbPrint(rqst, "</body></html>");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

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

      image

  • 관련 함수

    wbGetAuthType(), wbGetContentLength(), wbGetDocumentRoot(), wbGetMethod(), wbGetParsedURI(), wbGetPathInfo(), wbGetPathTranslated(), wbGetProtocol(), wbGetQueryString(), wbGetRemoteAddr(), wbGetRemoteHost(), wbGetRemoteIdent(), wbGetRemoteUser(), wbGetRequestURI(), wbGetScheme(), wbGetScriptFilename(), wbGetScriptName(), wbGetServerName(), wbGetServerSoftware(), wbGetTranslatedURI()

19. wbGetServerSoftware

wbGetServerSoftware는 서버의 Software 정보를 반환한다. wbGetServerSoftware()은 CGI 환경변수 “SERVER_SOFTWARE”에 해당하는 정보를 얻어내는데 사용되는 함수이다.

wbGetServerSoftware() 함수와 아래 “관련 함수”에 설정된 함수들과 같이 사용할 때 이 함수들은 버퍼를 같이 사용하게 되므로 반환된 값을 String Copy를 하지 않으면 마지막에 반환된 값이 출력된다. 그러므로 String Copy를 이용할 것을 권장한다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    char *wbGetServerSoftware(WBSVCINFO *rqst)
  • 반환값

    서버의 Software 정보를 반환한다.

  • 예제

    <wbsoft.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
     wbsoft         SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
     *SERVICE
     test           SVRNAME = wbsoft
    
     *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
     *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst)
       {
       char *server;
       server= wbGetServerSoftware(rqst);
       wbPutHdr(rqst, "Content-type", "text/html");
       wbPrint(rqst, "<HTML><BODY>");
       if(server != NULL)
       {
       wbPrint(rqst, "SERVER : %s", server);
       }
       else
       {
       wbPrint(rqst, "<H1>server is null</H1>");
       }
       wbPrint(rqst, "</body></html>");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

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

      image

  • 관련 함수

    wbGetAuthType(), wbGetContentLength(), wbGetDocumentRoot(), wbGetMethod(), wbGetParsedURI(), wbGetPathInfo(), wbGetPathTranslated(), wbGetProtocol(), wbGetQueryString(), wbGetRemoteAddr(), wbGetRemoteHost(), wbGetRemoteIdent(), wbGetRemoteUser(), wbGetRequestURI(), wbGetScheme(), wbGetScriptFilename(), wbGetScriptName(), wbGetServerName(), wbGetServerPort(), wbGetTranslatedURI()

20. wbGetTranslatedURI

wbGetTranslatedURI는 Request된 서비스의 parsing된 URI를 해석하여 실제 경로를 반환한다.

wbGetTranslatedURI() 함수와 아래 “관련 함수”에 설정된 함수들과 같이 사용할 때 이 함수들은 버퍼를 같이 사용하게 되므로 반환된 값을 String Copy를 하지 않으면 마지막에 반환된 값이 출력된다. 그러므로 String Copy를 이용할 것을 권장한다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    char *wbGetTranslatedURI(WBSVCINFO *rqst)
  • 반환값

    Request된 서비스의 URI를 해석하여 실제 경로를 반환한다.

  • 예제

    <wbtransuri.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
     wbtransuri     SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
     *SERVICE
     test           SVRNAME = wbtransuri
    
     *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
     *ALIAS
     alias          uri="/svct/", RealPath="/user2/haninho/webtob/svct/"
    
     *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst) {
       char *uri;
       uri = wbGetTranslatedURI(rqst);
       wbPutHdr(rqst, "Content-type", "text/html");
       wbPrint(rqst, "<HTML><BODY>");
       if(uri != NULL) {
       wbPrint(rqst, "URI : %s", uri);
       } else {
       wbPrint(rqst, "<H1>URI is null</H1>");
       }
       wbPrint(rqst, "</body></html>");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

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

      image

  • 관련 함수

    wbGetAuthType(), wbGetContentLength(), wbGetDocumentRoot(), wbGetMethod(), wbGetParsedURI(), wbGetPathInfo(), wbGetPathTranslated(), wbGetProtocol(), wbGetQueryString(), wbGetRemoteAddr(), wbGetRemoteHost(), wbGetRemoteIdent(), wbGetRemoteUser(), wbGetRequestURI(), wbGetScheme(), wbGetScriptFilename(), wbGetScriptName(), wbGetServerName(), wbGetServerPort(), wbGetServerSoftware()

21. wbGetHdr

wbGetHdr은 Request의 헤더에서 Key에 해당하는 값을 반환한다. 이 함수는 클라이언트가 보낸 Request의 헤더에서 특정 Key값에 해당하는 것을 찾아내서 반환한다. 만약, 클라이언트가 보낸 Request 헤더들 중에서 특정 헤더의 값을 얻어내고자 할 때, 특정 헤더의 이름을 Key로 하여 그에 해당하는 정보를 얻어낼 수 있다.

인수 key는 “Content-type”이나 “Referer”와 같은 헤더의 이름이다.

  • 프로토타입

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

    인수 key의 값에 해당하는 헤더 값을 반환한다. 만약 그에 해당하는 정보가 존재하지 않으면 NULL 값을 반환한다.

  • 예제

    <wbhdr.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
     wbhdr          SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
     *SERVICE
     test           SVRNAME = wbhdr
    
     *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
     *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

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

      <wbhdr.html>

      <head><title>wbGetHdr</title></head>
      <body>
      <form method=get action="/svct/test">
      <table width=370>
      <br>
      <tr>
      <td> input name</td>
      <td><input type=input name=name></td>
      <td><input type=submit value="submit"></td>
      </tr>
      </table>
      </form>
      </body>
      </html>

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

      <wbhdr.c>

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

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

      image

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

      image

  • 관련 함수

    wbGetDateHdr(), wbGetIntHdr(), wbGetNthHdr(), wbGetHdrCount()

22. wbGetDateHdr

wbGetDateHdr은 Date를 표현하는 헤더의 값을 반환한다. Date를 표현하는 헤더의 값을 long 형태로 반환한다. 만약 요청한 헤더가 존재하지 않거나 Date로 변환될 수 없는 값을 가진 헤더에 호출되었으면 에러를 발생시킨다. 이 API는 “If-Modified-Since”와 “If-Unmodified-Since”와 같은 헤더를 핸들링하는데 유용하게 쓰인다.

인수 name은 Date를 표현하는 헤더이다. 현재 wbGetDateHdr() 함수는 “Last-Modified”와 “If-Modified-Since”에 대해서만 값을 반환한다.

  • 프로토타입

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

    1970 GMT, 1월 1이 자정이후부터 밀리세컨드로 표현된 long 값으로 지정된 헤더를 반환한다.

    요청한 헤더가 존재하지 않거나 Date로 변환될 수 없는 값을 가진 헤더에 대해 wbGetDateHdr()을 호출하게 되면 –1을 반환한다.

  • 예제

    <wbdatehdr.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
     wbdatehdr      SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
     *SERVICE
     test           SVRNAME = wbdatehdr
    
     *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
     *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

       #include <stdio.h>
       #include <usrinc/atmi.h>
       #include <usrinc/wbapi.h>
       test (WBSVCINFO *rqst)
       {
              long date1;
              long date2;
      
              date1 = wbGetDateHdr(rqst, "If-Modified-Since");
              date2 = wbGetDateHdr(rqst, "If-Unmodified-Since");
      
              wbPrint(rqst, "<HTML>\n");
              wbPrint(rqst, "<HEAD><TITLE> wbGetDateHdr Test </TITLE></HEAD>\n");
              wbPrint(rqst, "<BODY>\n");
              wbPrint(rqst, "<H1> wbGetDateHdr Test </H1>\n");
              wbPrint(rqst, "If-Modified-Since : %ld<br>", date1);
              wbPrint(rqst, "If-Unmodified-Since : %ld<br>", date2);
              wbPrint(rqst, "</BODY>\n");
              wbPrint(rqst, "</HTML>\n");
      
              wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

      브라우저로 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:tmax.co.kr
       If-Modified-Since:Mon, 20 Aug 2001 23:02:16 GMT
       If-UnModified-Since:Mon, 20 Aug 2001 23:02:16 GMT 
      
       HTTP/1.1 200 OK
       Date: Mon, 05 Nov 2001 08:26:52 GMT
       Server: WebtoB/3.0
       Content-Type: text/html
       Content-Length:     175
      
       <HTML>
       <HEAD><TITLE> wbGetDateHdr Test </TITLE></HEAD>
       <BODY>
       <H1> wbGetDateHdr Test </H1>
       If-Modified-Since : 998348536<br>If-Unmodified-Since : 998348536<br></BODY>
       </HTML>
  • 관련 함수

    wbGetHdr(), wbGetIntHdr(), wbGetNthHdr(), wbGetHdrCount()

23. wbGetIntHdr

wbGetIntHdr은 정수형태로 된 헤더의 값을 반환한다. 만약 헤더가 요청의 일부분으로 보내지지 않았다면 –1을 반환한다. 또한 정수형으로 변환될 수 없는 값을 가진 헤더에 호출되었으면 에러를 발생시킨다. 인수 name 은 “Age”나 “Retry-After” 같은 정수 형태의 헤더 이름이다.

  • 프로토타입

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

    지정된 헤더의 값을 정수형태로 반환한다. 에러가 발생하는 경우 –1을 반환한다.

  • 예제

    <wbinthdr.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
     wbinthdr       SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
     *SERVICE
     test           SVRNAME = wbinthdr
    
     *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
     *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst)
       {
              int hdr1, hdr2, hdr3;
              wbPutHdr(rqst, "Content-type", "text/html");
              wbPrint(rqst, "<HTML><BODY>");
              hdr1 = wbGetIntHdr(rqst, "Max-Forwards");
              wbPrint(rqst, "wbGetIntHdr(Max-Forwards) : %d<br>", hdr1);
              hdr2 = wbGetIntHdr(rqst, "Retry-After");
              wbPrint(rqst, "wbGetIntHdr(Retry-After) : %d<br>", hdr2);
              hdr3 = wbGetIntHdr(rqst, "Age");
              wbPrint(rqst, "wbGetIntHdr(Age) : %d<br>", hdr2);
              wbPrint(rqst, "</body></html>");
              wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

      $compile c wbinthdr
    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.co.kr
       Retry-After: 111
       Max-Forwards: 222
       Age: 333
      
       HTTP/1.1 200 OK
       Date: Mon, 05 Nov 2001 08:56:07 GMT
       Server: WebtoB/3.0
       Content-type: text/html
       Content-Length:     121
      
       <HTML><BODY>wbGetIntHdr(Max-Forwards) :
       222<br>wbGetIntHdr(Retry-After) : 111<br>wbGetIntHdr(Age) :
       333<br></body></html>
  • 관련 함수

    wbSvrInit()

24. wbGetNthHdr

wbGetNthHdr은 특정 순서에 해당하는 헤더의 값을 반환한다. Request 헤더 중에서 nth번째에 해당하는 헤더의 값을 얻어내기 위한 함수이다.

인수 nth는 클라이언트로부터 넘어오는 헤더의 값들 중에서 원하는 순서의 값을 설정한다.

  • 프로토타입

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

    nth번째에 해당하는 헤더의 값을 반환한다.

  • 예제

    <wbnthhdr.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
     wbnthhdr       SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
     *SERVICE
     test           SVRNAME = wbnthhdr
    
     *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
     *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst)
       {
       char *header;
       header = wbGetNthHdr(rqst, 1); 
       wbPutHdr(rqst, "Content-type", "text/html");
       wbPrint(rqst, "<HTML><BODY>");
       wbPrint(rqst, "wbGetNthHdr : %s<br>", header);
       wbPrint(rqst, "</body></html>");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

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

      image

  • 관련 함수

    wbGetHdr(), wbGetDateHdr(), wbGetIntHdr(), wbGetHdrCount()

25. wbGetHdrCount

wbGetHdrCount는 Request 헤더의 총 개수를 반환한다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    int wbGetHdrCount(WBSVCINFO *rqst)
  • 반환값

    헤더의 총 개수를 반환한다.

  • 예제

    <wbhdrcount.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
     wbhdrcount     SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
     *SERVICE
     test           SVRNAME = wbhdrcount
    
     *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
     *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst)
       {
       int header;
       header = wbGetHdrCount(rqst);
       wbPutHdr(rqst, "Content-type", "text/html");
       wbPrint(rqst, "<HTML><BODY>");
       wbPrint(rqst, "Total header : %d<br>", header);
       wbPrint(rqst, "</body></html>");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

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

      image

  • 관련 함수

    wbGetHdr(), wbGetDateHdr(), wbGetIntHdr(), wbGetNthHdr()

26. wbGetData

wbGetData는 Request의 데이터 필드에서 Key 값에 해당하는 값을 반환한다.

이 함수는 클라이언트가 보낸 Request의 데이터 필드에서 원하는 값을 얻을 때 이용된다. 보통 클라이언트가 CGI 등에 대한 Request를 보내는 경우, 이것에는 헤더뿐만 아니라, 클라이언트가 서버에 전달하고자 하는 데이터도 이어져 오는 경우가 많다. 이 때 원하는 데이터를 얻고자 할 때 이를 Key 값으로 하여 이에 해당하는 데이터를 얻을 수 있다.

  • 프로토타입

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

    Key에 해당하는 필드의 데이터 값을 반환한다. 만약 Key에 해당하는 데이터 값이 존재하지 않을 경우에는 NULL 값을 반환한다.

  • 예제

    <wbdata.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
     wbdata         SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
     *SERVICE
     test           SVRNAME = wbdata
    
     *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
     *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

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

      <wbdata.html>

      <HTML>
      <HEAD> <TITLE>WebToB 게시판</TITLE> </HEAD>
      <BODY>
      <H2><big>WebToB Board Upload</big></H3>
      </h2>
      <HR WIDTH=500 ALIGN=left>
      <BR>
      <FORM METHOD=post ACTION="/svct/test">
      <TABLE WIDTH=500 BORDER=0>
      <TR>
      <TD>Writer</TD>
      <TD><INPUT NAME=writer SIZE=20></TD>
      </TR>
      <TR>
      <TD>Title</TD>
      <TD><INPUT NAME=title SIZE=50></TD>
      </TR>
      <TR><TD COLSPAN=2><B>Contents</B></TD></TR>
      <TR><TD COLSPAN=2>
      <TEXTAREA NAME=doc COLS=60 ROWS=10></TEXTAREA>
      </TD> </TR>
      <TR>
      <TD>E-Mail</TD>
      <TD><INPUT NAME=email SIZE=40></TD>
      </TR>
      <TR>
      <TD>Home Page</TD>
      <TD><INPUT NAME=homepage SIZE=40 VALUE="http://"></TD>
      </TR>
      </TABLE>
      <BR>
      <INPUT TYPE=submit VALUE="Submit">
      <INPUT TYPE=reset VALUE="Clear">
      </FORM>
      </BODY>
      </HTML>

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

      <wbdata.c>

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst) {
       char *name;
       char *title;
       name = wbGetData(rqst, "name");
       title = wbGetData(rqst, "title");
       wbPutHdr(rqst, "Content-type", "text/html");
       wbPrint(rqst, "<HTML><BODY>");
       wbPrint(rqst, "<H1>input name : %s</H1>", name);
       wbPrint(rqst, "<BR>");
       wbPrint(rqst, "<H1>input title : %s</H1>", title);
       wbPrint(rqst, "</body></html>");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

      image

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

      image

  • 관련 함수

    wbGetNthData(), wbGetDataCount()

27. wbGetNthKey

wbGetNthKey는 Request에서 N 번째의 Key에 대한 데이터를 반환한다.

클라이언트가 Request를 보냈을 때, 일반 CGI의 경우 데이터가 필드에 이어져서 들어온다. 이 때 들어오는 순서가 보통 클라이언트가 입력한 차례대로 들어오게 된다. 이때 특정 순서의 데이터에 대한 입력 값을 얻고 싶을 때 이 함수를 이용하면 된다. ntn라는 필드에 순서를 적으면 그 순서에 맞는 입력 값에 대한 변수명이 들어오게 되는 것이다. 가령 nth 값을 2라고 적는다면 두 번째로 들어오는 데이터의 변수 이름에 대한 값을 전달해 준다.

만약 클라이언트가 name이라는 변수에 andy라는 값을 넣었다고 하자. 이때 이 name이라는 변수명이 첫 번째 들어온 변수이고 이어서 title이라는 변수에 test라는 값을 넣었다면 이것이 두 번째 들어온 변수가 될 것이다. 이때 이 함수를 이용하여 nth에 2라는 값을 넣는다면, title라는 변수 이름을 전달하여 줄 것이다. 이는, WBAPI 등에서 클라이언트가 보내온 변수의 이름을 알아내는데 유용하게 이용된다.

  • 프로토타입

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

    nth에 해당하는 필드 이름을 반환한다. 만약 그에 해당하는 필드 이름이 존재하지 않으면 NULL 값을 반환한다.

  • 예제

    <wbnthkey.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
     wbnthkey       SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
     *SERVICE
     test           SVRNAME = wbnthkey
    
     *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
     *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

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

      <wbnthkey.html>

      <HTML>
      <HEAD> <TITLE>WebToB 게시판</TITLE> </HEAD>
      <BODY>
      <H2><big>WebToB Board Upload</big></H3>
      </h2>
      <HR WIDTH=500 ALIGN=left>
      <BR>
      <FORM METHOD=post ACTION="/svct/test">
      <TABLE WIDTH=500 BORDER=0>
      <TR>
      <TD>Writer</TD>
      <TD><INPUT NAME=writer SIZE=20></TD>
      </TR>
      <TR>
      <TD>Title</TD>
      <TD><INPUT NAME=title SIZE=50></TD>
      </TR>
      <TR><TD COLSPAN=2><B>Contents</B></TD></TR>
      <TR><TD COLSPAN=2>
      <TEXTAREA NAME=doc COLS=60 ROWS=10></TEXTAREA>
      </TD> </TR>
      <TR>
      <TD>E-Mail</TD>
      <TD><INPUT NAME=email SIZE=40></TD>
      </TR>
      <TR>
      <TD>Home Page</TD>
      <TD><INPUT NAME=homepage SIZE=40 VALUE="http://"></TD>
      </TR>
      </TABLE>
      <BR>
      <INPUT TYPE=submit VALUE="Submit">
      <INPUT TYPE=reset VALUE="Clear">
      </FORM>
      </BODY>
      </HTML>

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

      <wbnthkey.c>

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
      
       test(WBSVCINFO *rqst)
       {
       char *first, *second;
       first = wbGetNthKey(rqst, 1);
       second = wbGetNthKey(rqst, 2);
       wbPutHdr(rqst, "Content-type", "text/html");
       wbPrint(rqst, "<HTML><BODY>");
       wbPrint(rqst, "<H1>first data : %s</H1>", first);
       wbPrint(rqst, "<BR>");
       wbPrint(rqst, "<H1>second data : %s</H1>", second);
       wbPrint(rqst, "</body></html>");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

      image

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

      image

  • 관련 함수

    wbGetData(), wbGetNthData(), wbGetValue()

28. wbGetNthData

wbGetNthData는 Request의 데이터에서 N번째 데이터를 반환한다. 클라이언트가 요구한 Request에서 헤더 외에도 여러 개의 데이터가 동시에 올 수 있다. 이들 중, 원하는 순서의 데이터를 얻어내는 것을 말한다.

클라이언트가 Request를 보냈을 때, 일반 CGI의 경우 데이터가 필드에 이어져서 들어온다. 이때 들어오는 순서가 보통 클라이언트가 입력한 차례대로 들어오게 된다. 이때 특정 순서의 데이터를 얻고 싶을 때 이 함수를 이용하면 된다. nth라는 필드에 순서를 적으면 그 순서에 맞는 데이터가 들어오게 되는 것이다. 가령 ntn 값을 2라고 적는 다면, 두 번째로 들어오는 데이터에 대한 값을 전달해 준다. 앞에서 설명한 wbGetNthKey()와 혼동할 여지가 있으나, 앞의 함수는 변수명을 전달하는 것이고, 이 wbGetNthData()는 변수의 실제 값을 전달한다.

  • 프로토타입

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

    nth에 해당하는 데이터 값을 반환한다. 만약 그에 해당하는 데이터 값이 존재하지 않으면 NULL 값을 반환한다.

  • 예제

    <wbnthdata.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
     wbnthdata      SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
     *SERVICE
     test           SVRNAME = wbnthdata
    
     *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
     *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

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

      <wbnthdata.html>

      <HTML>
      <HEAD> <TITLE>WebToB 게시판</TITLE> </HEAD>
      <BODY>
      <H2><big>WebToB Board Upload</big></H3>
      </h2>
      <HR WIDTH=500 ALIGN=left>
      <BR>
      <FORM METHOD=post ACTION="/svct/test">
      <TABLE WIDTH=500 BORDER=0>
      <TR>
      <TD>Writer</TD>
      <TD><INPUT NAME=writer SIZE=20></TD>
      </TR>
      <TR>
      <TD>Title</TD>
      <TD><INPUT NAME=title SIZE=50></TD>
      </TR>
      <TR><TD COLSPAN=2><B>Contents</B></TD></TR>
      <TR><TD COLSPAN=2>
      <TEXTAREA NAME=doc COLS=60 ROWS=10></TEXTAREA>
      </TD> </TR>
      <TR>
      <TD>E-Mail</TD>
      <TD><INPUT NAME=email SIZE=40></TD>
      </TR>
      <TR>
      <TD>Home Page</TD>
      <TD><INPUT NAME=homepage SIZE=40 VALUE="http://"></TD>
      </TR>
      </TABLE>
      <BR>
      <INPUT TYPE=submit VALUE="Submit">
      <INPUT TYPE=reset VALUE="Clear">
      </FORM>
      </BODY>
      </HTML>

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

      <wbnthdata.c>

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst) {
       char *first, *second;
       first = wbGetNthData(rqst, 1);
       second = wbGetNthData(rqst, 2);
       wbPutHdr(rqst, "Content-type", "text/html");
       wbPrint(rqst, "<HTML><BODY>");
       wbPrint(rqst, "<H1>first data : %s</H1>", first);
       wbPrint(rqst, "<BR>");
       wbPrint(rqst, "<H1>second data : %s</H1>", second);
       wbPrint(rqst, "</body></html>");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

      image

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

      image

  • 관련 함수

    wbGetData(), wbGetDataCount()

29. wbGetDataCount

wbGetDataCount는 Request에서 입력으로 들어온 데이터의 개수를 반환한다. 클라이언트가 요구한 Request에서 헤더 외에도 여러 개의 데이터가 동시에 올 수 있다. wbGetDataCount()는 클라이언트가 Request를 통하여 서버에 전달한 데이터의 총 개수를 반환하는 함수이다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    int wbGetDataCount(WBSVCINFO *rqst)
  • 반환값

    클라이언트가 서버에 전달한 데이터의 총 개수를 반환한다.

  • 예제

    <wbdatacount.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
     wbdatacount    SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
     *SERVICE
     test           SVRNAME = wbdatacount
    
     *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
     *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

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

      <wbdatacount.html>

      <HTML>
      <HEAD> <TITLE>WebToB 게시판</TITLE> </HEAD>
      <BODY>
      <H2><big>WebToB Board Upload</big></H3>
      </h2>
      <HR WIDTH=500 ALIGN=left>
      <BR>
      <FORM METHOD=post ACTION="/svct/test">
      <TABLE WIDTH=500 BORDER=0>
      <TR>
      <TD>Writer</TD>
      <TD><INPUT NAME=writer SIZE=20></TD>
      </TR>
      <TR>
      <TD>Title</TD>
      <TD><INPUT NAME=title SIZE=50></TD>
      </TR>
      <TR><TD COLSPAN=2><B>Contents</B></TD></TR>
      <TR><TD COLSPAN=2>
      <TEXTAREA NAME=doc COLS=60 ROWS=10></TEXTAREA>
      </TD> </TR>
      <TR>
      <TD>E-Mail</TD>
      <TD><INPUT NAME=email SIZE=40></TD>
      </TR>
      <TR>
      <TD>Home Page</TD>
      <TD><INPUT NAME=homepage SIZE=40 VALUE="http://"></TD>
      </TR>
      </TABLE>
      <BR>
      <INPUT TYPE=submit VALUE="Submit">
      <INPUT TYPE=reset VALUE="Clear">
      </FORM>
      </BODY>
      </HTML>

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

      <wbdatacount.c>

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst)
       {
       int count;
       count = wbGetDataCount(rqst);   
       wbPutHdr(rqst, "Content-type", "text/html");
       wbPrint(rqst, "<HTML><BODY>");
       wbPrint(rqst, "<H1>total data count : %d</H1>", count);
       wbPrint(rqst, "</body></html>");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

      image

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

      image

  • 관련 함수

    wbGetData(), wbGetNthData()

30. wbGetValue

wbGetValue는 Request에서 특정 Key 값의 N번째 데이터를 반환한다. 클라이언트가 서버에 Request를 전달하는 경우, 데이터가 여러 개 이어져 들어올 때 하나의 변수에 여러 개의 데이터가 연결되어 들어 올 수도 있다. 이때 하나의 변수에 여러 개의 데이터가 들어온 경우 각 순서에 맞는 데이터를 얻어내는 것이 가능하다. 클라이언트가 name이란 변수에 2가지 값을 넣은 경우 이를 nth라는 순서에 의해서 얻어내는 것이 가능하다.

예를 들어 클라이언트가 name이라는 변수에 2가지 값을 넣은 경우 nth의 값으로 1을 설정하면 name이라는 변수이름을 통해 들어오는 값들의 첫 번째 값을 얻어내며 nth의 값으로 2를 설정하면 name이라는 변수 이름을 통해 들어오는 값들의 두 번째 값을 얻어낸다.

  • 프로토타입

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

    특정 key의 nth 번째 데이터를 반환한다. nth번째 해당하는 데이터가 존재하지 않는다면 NULL 값을 반환한다.

  • 예제

    <wbvalue.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
     wbvalue        SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
     *SERVICE
     test           SVRNAME = wbvalue
    
     *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
     *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

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

      <wbvalue.html>

      <html>
      <head><title>wbGetValue</title></head>
      <body>
      <form method=get action="/svct/test">
      <table width=370>
      <br>
      <h1> input name</h1>
      <tr>
      <td><input type=input name=name></td>
      <td><input type=input name=name></td>
      <td><input type=input name=name></td>
      <td><input type=submit value="submit"></td>
      </tr>
      </table>
      </form>
      </body>
      </html>

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

      <wbvalue.c>

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst) {
       char *value1, *value2, *value3;
       value1 = wbGetValue(rqst,"name",3);
       value2 = wbGetValue(rqst,"name",2);
       value3 = wbGetValue(rqst,"name",1);
       wbPutHdr(rqst, "Content-type", "text/html");
       wbPrint(rqst, "<HTML><BODY>");
       wbPrint(rqst, "<H1>value1 is : %s</H1>", value1);
       wbPrint(rqst, "<H1>value2 is : %s</H1>", value2);
       wbPrint(rqst, "<H1>value3 is : %s</H1>", value3);
       wbPrint(rqst, "</body></html>");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

      image

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

      image

  • 관련 함수

    wbGetData(), wbGetNthData()

31. wbKeyOccur

wbKeyOccur은 Request 들어온 데이터에서 Key 값의 수를 반환한다.

클라이언트가 서버에 Request를 전달할 때, 여러 개의 데이터가 전달될 수 있다. 또한 하나의 변수 이름에 여러 개의 데이터가 전달될 수 있다. 이 때 클라이언트가 보낸 데이터들 중에서 하나의 변수 이름에 여러 개의 데이터가 전달될 경우 특정 변수의 이름을 통해 전달되는 데이터의 개수를 측정하는데 wbKeyOccur()을 이용할 수 있다. 이 함수는 인수 key에 입력된 변수명에 해당하는 데이터의 개수를 전달하게 된다.

인수 key는 클라이언트가 서버로 데이터를 전달할 때 사용하는 변수의 이름이다.

  • 프로토타입

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

    특정 key에 해당하는 데이터의 개수를 반환한다.

  • 예제

    <wboccur.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
     wboccur        SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
     *SERVICE
     test           SVRNAME = wboccur
    
     *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
     *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

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

      <wboccur.html>

      <html>
      <head><title>wbGetOccur</title></head>
      <body>
      <form method=get action="/svct/test">
      <table width=370>
      <br>
      <h1> input name</h1>
      <tr>
      <td><input type=input name=name></td>
      <td><input type=input name=name></td>
      <td><input type=input name=name></td>
      <td><input type=submit value="submit"></td>
      </tr>
      </table>
      </form>
      </body>
      </html>

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

      <wboccur.c>

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst) {
       int count;
       count = wbKeyOccur(rqst,"name");   
       wbPutHdr(rqst, "Content-type", "text/html");
       wbPrint(rqst, "<HTML><BODY>");
       wbPrint(rqst, "<H1>data name is : %d</H1>", count);
       wbPrint(rqst, "</body></html>");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

      image

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

      image

32. wbGetReqLine

wbGetReqLine은 Request에 들어온 Line의 첫 번째 Line 포인터를 반환한다.

클라이언트가 서버에 Request를 보낸 경우 한 Line에 모든 Request를 보낼 수도 있지만, 그렇지 않은 경우가 대부분이다. 이 때 클라이언트가 보낸 Request의 첫 Line에 대한 포인터를 제공하게 된다. WBAPI를 이용하여 프로그램하는 경우, 클라이언트의 Request를 명확하게 알아야 할 필요가 있을 때 유용하게 이용 할 수 있다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    char *wbGetReqLine(WBSVCINFO *rqst)
  • 반환값

    클라이언트가 보낸 Request의 첫 Line에 대한 포인터를 반환한다.

  • 예제

    <wbreqline.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
     wbreqline      SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
     *SERVICE
     test           SVRNAME = wbreqline
    
     *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
     *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

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

      <wbreqline.html>

      <html>
      <head><title>wbGetReqline</title></head>
      <body>
      <form method=get action="/svct/test">
      <table width=370>
      <br>
      <h1> input name</h1>
      <tr>
      <td><input type=input name=name></td>
      <td><input type=input name=name></td>
      <td><input type=input name=name></td>
      <td><input type=submit value="submit"></td>
      </tr>
      </table>
      </form>
      </body>
      </html>

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

      <wbreqline.c>

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst) {
       char *pointer;
       pointer = wbGetReqLine(rqst);
       wbPutHdr(rqst, "Content-type", "text/html");
       wbPrint(rqst, "<HTML><BODY>");
       wbPrint(rqst, "first line : %s", pointer);
       wbPrint(rqst, "</body></html>");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

      image

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

      image

33. wbGetRequestURL

wbGetRequestURL은 Request된 URL을 반환한다. 클라이언트가 서버에 Request를 보낸 경우 브라우저의 주소창에 입력한 모든 정보를 얻어낸다.

예를 들어 주소창에 “http://www.tmax.co.kr/cgi-bin/tmax.cgi”라고 입력했다면 반환하는 값은 “http://www.tmax.co.kr/cgi-bin/tmax.cgi”이다.

  • 프로토타입

    #include <wbapi.h>
    #include <atmi.h>
    char *wbGetRequestURL(WBSVCINFO *rqst)
  • 반환값

    클라이언트가 보낸 Request의 URL을 반환한다.

  • 예제

    <wbrequrl.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
     wbrequrl       SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
     *SERVICE
     test           SVRNAME = wbrequrl
    
     *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
     *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

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

      <wbrequrl.html>

      <html>
      <head><title>wbGetReqURL</title></head>
      <body>
      <form method=get action="/svct/test">
      <table width=370>
      <br>
      <h1> input name</h1>
      <tr>
      <td><input type=input name=name></td>
      <td><input type=input name=name></td>
      <td><input type=input name=name></td>
      <td><input type=submit value="submit"></td>
      </tr>
      </table>
      </form>
      </body>
      </html>

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

      <wbrequrl.c>

       #include <stdio.h>
       #include <usrinc/wbapi.h>
       #include <usrinc/atmi.h>
       test(WBSVCINFO *rqst)
       {
       char *url;
       url = wbGetRequestURL(rqst); 
       wbPutHdr(rqst, "Content-type", "text/html");
       wbPrint(rqst, "<HTML><BODY>");
       wbPrint(rqst, "Request URL is : %s", url);
       wbPrint(rqst, "</body></html>");
       wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

      image

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

      image

34. wbGetFileName

wbGetFileName은 파일의 이름을 반환한다. 이 함수는 클라이언트가 보낸 Request의 데이터 필드에서 파일의 이름을 얻을 때 이용된다.

원하는 파일명을 얻고자 할 때 Key값을 이용하여 이에 해당하는 파일명을 얻을 수 있다.

  • 프로토타입

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

    파일의 이름을 반환한다.

  • 예제

    <wbfilename.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
     wbfilename     SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
     *SERVICE
     test           SVRNAME = wbfilename
    
     *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
     *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

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

      <wbfilename.html>

      <TITLE> wbGetFileName() Test </TITLE>
      <BODY>
      <H2> wbGetFileName TEST </H2>
      <FORM METHOD=post ACTION="/svct/test" enctype='multipart/form-data'>
      <B>FILE UPLOAD</B>
      <TABLE WIDTH=650 BGCOLOR=#DDDDDD>
      <TR>
      <TD><SMALL><B>file</B></SMALL></TD>
      <TD><INPUT TYPE=file NAME=upfile SIZE=35></TD>
      </TR>
      <TR>
      <TD><INPUT TYPE=submit VALUE="upload"></TD>
      </TR></TABLE>
      </FORM>
      </BODY>
      </HTML>

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

      <wbfilename.c>

       #include        <stdio.h>
       #include        <usrinc/atmi.h>
       #include        <usrinc/wbapi.h>
       test(WBSVCINFO *rqst)
       {
       char  *filename, *temp;
         int k, count;
         FILE *fp;
         count = wbGetDataCount(rqst);
         for(k=1; k<=count; k++)
         {
       temp = wbGetNthKey(rqst, k);
          if((filename=wbGetFileName(rqst, temp)) != NULL)
          {
          wbPrint(rqst,"filename=%s\n",filename);
          }
          }
          wbReturn(rqst, WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

      image

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

      image

  • 관련 함수

    wbGetFileLen()

35. wbGetFileLen

wbGetFileLen은 파일의 크기를 반환한다. 이 함수는 클라이언트가 보낸 Request의 데이터 필드에서 서버로 넘겨 오는 파일 정보에서 파일의 크기를 얻고자 할 때 이용된다. 이때 크기를 얻고자 하는 파일의 path가 넘어오게 되는 Key값을 이용하여 이에 해당하는 파일의 크기를 알아낼 수 있다.

  • 프로토타입

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

    key에 해당하는 파일의 크기를 반환한다. 이때 반환하는 값의 단위는 byte이다.

  • 예제

    <wbfilelen.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
     wbfilelen      SVGNAME = webapg, MinProc = 1, MaxProc = 2, 
    
     *SERVICE
     test           SVRNAME = wbfilelen
    
     *URI
     wbapi          Uri = "/svct/", Svrtype = WEBSTD
    
     *EXT
     htm            MimeType = "text/html", SvrType = HTML
    1. 환경파일(Config-file)을 컴파일한다.

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

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

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

      <wbfilelen.html>

      <TITLE> wbGetFileLen Test </TITLE>
      <BODY>
      <H2> wbGetFileName TEST </H2>
      <FORM METHOD=post ACTION="/svct/test" enctype='multipart/form-data'>
      <B>FILE UPLOAD</B>
      <TABLE WIDTH=650 BGCOLOR=#DDDDDD>
      <TR>
      <TD><SMALL><B>file</B></SMALL></TD>
      <TD><INPUT TYPE=file NAME=upfile SIZE=35></TD>
      </TR>
      <TR>
      <TD><INPUT TYPE=submit VALUE="upload"></TD>
      </TR></TABLE>
      </FORM>
      </BODY>
      </HTML>

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

      <wbfilelen.c>

       #include        <stdio.h>
       #include        <usrinc/atmi.h>
       #include        <usrinc/wbapi.h>
       test(WBSVCINFO *rqst) {
       char *temp, *filedata, *filename, path[255];
       long filelen;
       int k, count, rtn;
       FILE *fp;
       count = wbGetDataCount(rqst);
       for(k=1; k<=count; k++)
       {
       temp = wbGetNthKey(rqst, k);
       if((filename=wbGetFileName(rqst, temp)) != NULL)
       {
       filelen = wbGetFileLen(rqst, temp);
       wbPrint(rqst,"filelength=%ld\n",filelen);
       }
       }
       wbReturn(rqst,WBSUCCESS);
       }
    4. WBAPI로 만들어진 c파일을, Makefile 파일을 이용하여 컴파일한다.

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

      image

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

      image

  • 관련 함수

    wbGetFileName()