Sophie

Sophie

distrib > Mandriva > 9.2 > i586 > by-pkgid > a804ef007a99f7d26cf24253c2994680 > files > 1689

howto-html-ja-9.1-0.5mdk.noarch.rpm

<HTML
><HEAD
><TITLE
>C $B$*$h$S(B C++ $B$G$N(B XML-RPC $B$N;H$$J}(B</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.54"><LINK
REL="HOME"
TITLE="XML-RPC HOWTO"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Python $B$G$N(B XML-RPC $B$N;H$$J}(B"
HREF="xmlrpc-howto-python.html"><LINK
REL="NEXT"
TITLE="Java $B$G$N(B XML-RPC $B$N;H$$J}(B"
HREF="xmlrpc-howto-java.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
TEXT="#000000"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>XML-RPC HOWTO</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="xmlrpc-howto-python.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="xmlrpc-howto-java.html"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="XMLRPC-HOWTO-C"
>8. C $B$*$h$S(B C++ $B$G$N(B XML-RPC $B$N;H$$J}(B</A
></H1
><P
>C/C++ $BMQ(B XML-RPC $B$N%3%T!<$rF@$k$K$O!"(B<A
HREF="http://xmlrpc-c.sourceforge.net"
TARGET="_top"
>xmlrpc-c $B$N%&%'%V%5%$%H(B</A
>$B$r(B
    $B8+$F$/$@$5$$!#(B</P
><P
>RPM $B7A<0$G$9$Y$F$N$b$N$r%@%&%s%m!<%I$9$k$3$H$b!"%=!<%9$+$i<+J,(B
    $B$G4D6-$r9=C[$9$k$3$H$b$G$-$^$9!#(B</P
><DIV
CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="XMLRPC-HOWTO-C-CLIENT"
>8.1. C $B%/%i%$%"%s%H(B</A
></H2
><P
>$B<!$N%W%m%0%i%`%3!<%I$r(B
      <TT
CLASS="FILENAME"
>getSumAndDifference.c</TT
> $B$H$7$F%U%!%$%k$KJ]B8$7(B
      $B$F$/$@$5$$!#(B</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="PROGRAMLISTING"
>#include &#60;stdio.h&#62;
#include &#60;xmlrpc.h&#62;
#include &#60;xmlrpc_client.h&#62;

#define NAME       "XML-RPC getSumAndDifference C Client"
#define VERSION    "0.1"
#define SERVER_URL "http://xmlrpc-c.sourceforge.net/api/sample.php"

void die_if_fault_occurred (xmlrpc_env *env)
{
    /* Check our error-handling environment for an XML-RPC fault. */
    if (env-&#62;fault_occurred) {
        fprintf(stderr, "XML-RPC Fault: %s (%d)\n",
                env-&#62;fault_string, env-&#62;fault_code);
        exit(1);
    }
}

int main (int argc, char** argv)
{
    xmlrpc_env env;
    xmlrpc_value *result;
    xmlrpc_int32 sum, difference;
    
    /* Start up our XML-RPC client library. */
    xmlrpc_client_init(XMLRPC_CLIENT_NO_FLAGS, NAME, VERSION);
    xmlrpc_env_init(&#38;env);

    /* Call our XML-RPC server. */
    result = xmlrpc_client_call(&#38;env, SERVER_URL,
                                "sample.sumAndDifference", "(ii)",
                                (xmlrpc_int32) 5,
                                (xmlrpc_int32) 3);
    die_if_fault_occurred(&#38;env);
    
    /* Parse our result value. */
    xmlrpc_parse_value(&#38;env, result, "{s:i,s:i,*}",
                       "sum", &#38;sum,
                       "difference", &#38;difference);
    die_if_fault_occurred(&#38;env);

    /* Print out our sum and difference. */
    printf("Sum: %d, Difference: %d\n", (int) sum, (int) difference);
    
    /* Dispose of our result value. */
    xmlrpc_DECREF(result);

    /* Shutdown our XML-RPC client library. */
    xmlrpc_env_clean(&#38;env);
    xmlrpc_client_cleanup();

    return 0;
}</PRE
></FONT
></TD
></TR
></TABLE
><P
>$B%3%s%Q%$%k$9$k$?$a$NF~NO$r<($7$^$9(B -</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="PROGRAMLISTING"
>bash$ CLIENT_CFLAGS=`xmlrpc-c-config libwww-client --cflags`
bash$ CLIENT_LIBS=`xmlrpc-c-config libwww-client --libs`
bash$ gcc $CLIENT_CFLAGS -o getSumAndDifference getSumAndDifference.c $CLIENT_LIBS</PRE
></FONT
></TD
></TR
></TABLE
><P
>$B$"$J$?$N%7%9%F%`$N(B C $B%3%s%Q%$%i$NL>A0$,(B
      <B
CLASS="COMMAND"
>gcc</B
> $B$G$O$J$$$+$b$7$l$J$$$N$G!"<B:]$NF~NO$G$O$=(B
      $B$l$rBe$($kI,MW$,$"$k$+$b$7$l$^$;$s!#(B</P
></DIV
><DIV
CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="XMLRPC-HOWTO-CC-CLIENT"
>8.2. C++ $B%/%i%$%"%s%H(B</A
></H2
><P
>$B<!$N%W%m%0%i%`%3!<%I$r(B
      <TT
CLASS="FILENAME"
>getSumAndDifference2.cc</TT
> $B$H$7$F%U%!%$%k$KJ]B8(B
      $B$7$F$/$@$5$$!#(B</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="PROGRAMLISTING"
>#include &#60;iostream.h&#62;
#include &#60;XmlRpcCpp.h&#62;

#define NAME       "XML-RPC getSumAndDifference C++ Client"
#define VERSION    "0.1"
#define SERVER_URL "http://xmlrpc-c.sourceforge.net/api/sample.php"

static void get_sum_and_difference () {

    // Build our parameter array.
    XmlRpcValue param_array = XmlRpcValue::makeArray();
    param_array.arrayAppendItem(XmlRpcValue::makeInt(5));
    param_array.arrayAppendItem(XmlRpcValue::makeInt(3));

    // Create an object to resprent the server, and make our call.
    XmlRpcClient server (SERVER_URL);
    XmlRpcValue result = server.call("sample.sumAndDifference", param_array);

    // Extract the sum and difference from our struct.
    XmlRpcValue::int32 sum = result.structGetValue("sum").getInt();
    XmlRpcValue::int32 diff = result.structGetValue("difference").getInt();
        
    cout &#60;&#60; "Sum: " &#60;&#60; sum &#60;&#60; ", Difference: " &#60;&#60; diff &#60;&#60; endl;
}

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

    // Start up our client library.
    XmlRpcClient::Initialize(NAME, VERSION);

    // Call our client routine, and watch out for faults.
    try {
        get_sum_and_difference();
    } catch (XmlRpcFault&#38; fault) {
        cerr &#60;&#60; argv[0] &#60;&#60; ": XML-RPC fault #" &#60;&#60; fault.getFaultCode()
             &#60;&#60; ": " &#60;&#60; fault.getFaultString() &#60;&#60; endl;
        XmlRpcClient::Terminate();
        exit(1);
    }

    // Shut down our client library.
    XmlRpcClient::Terminate();
    return 0;
}</PRE
></FONT
></TD
></TR
></TABLE
><P
>$B%3%s%Q%$%k$9$k$?$a$NF~NO$r<($7$^$9(B -</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="PROGRAMLISTING"
>bash$ CLIENT_CFLAGS=`xmlrpc-c-config c++ libwww-client --cflags`
bash$ CLIENT_LIBS=`xmlrpc-c-config c++ libwww-client --libs`
bash$ c++ $CLIENT_CFLAGS -o getSumAndDifference2 getSumAndDifference2.cc $CLIENT_LIBS</PRE
></FONT
></TD
></TR
></TABLE
><P
>$B$3$N:n6H$N$?$a$K!"$+$J$j:G6a$N(B C++ $B%3%s%Q%$%i$,I,MW$H$J$j$^(B
      $B$9!#(B</P
></DIV
><DIV
CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="XMLRPC-HOWTO-CC-PROXY"
>8.3. $BBeBX%/%i%9(B (Proxy Class) $B$G$N(B C++ $B%/%i%$%"%s%H(B</A
></H2
><P
>XML-RPC $B%5!<%P$,(B<A
HREF="xmlrpc-howto-interfaces.html#XMLRPC-HOWTO-API-INTROSPECTION"
>$B%$%s%H%m%9%Z%/%7%g%s(B API</A
> $B$r%5%]!<%H$7$F$$$k$J$i!"<+F0E*$K(B
      $B$=$N%5!<%PMQ$N(B C++ $BBeBX%/%i%9$r@8@.$G$-$^$9!#BeBX%/%i%9$r@8@.$9$k(B
      $B$?$a$K$O!"<!$N%3%^%s%I$rF~NO$7$F$=$N=PNO$r%U%!%$%k$KJ]B8$7$F$/$@$5(B
      $B$$!#(B</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="PROGRAMLISTING"
>bash$ xml-rpc-api2cpp \
&#62; http://xmlrpc-c.sourceforge.net/api/sample.php sample SampleProxy</PRE
></FONT
></TD
></TR
></TABLE
><P
>$B$3$l$O(B <TT
CLASS="LITERAL"
>sample</TT
> $B$G;O$^$k$9$Y$F$N%a%=%C%IMQ(B
      $B$N%i%C%Q!<$,4^$^$l$F$$$k(B <TT
CLASS="LITERAL"
>SampleProxy</TT
> $B$HL>$E$1$i(B
      $B$l$?BeBX%/%i%9$r@8@.$7$^$9!#$"$J$?$,K>$`J}K!$G$3$N%/%i%9$r=$@5$7$F(B
      $B$b$+$^$$$^$;$s!#(B</P
></DIV
><DIV
CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="XMLRPC-HOWTO-C-CGI"
>8.4. CGI $B%Y!<%9$N(B C $B%5!<%P(B</A
></H2
><P
>$B<!$N%W%m%0%i%`%3!<%I$r(B
      <TT
CLASS="FILENAME"
>sumAndDifference.c</TT
> $B$H$7$F%U%!%$%k$KJ]B8$7$F$/(B
      $B$@$5$$!#(B</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="PROGRAMLISTING"
>#include &#60;xmlrpc.h&#62;
#include &#60;xmlrpc_cgi.h&#62;

xmlrpc_value *
sumAndDifference (xmlrpc_env *env, xmlrpc_value *param_array, void *user_data)
{
    xmlrpc_int32 x, y;

    /* Parse our argument array. */
    xmlrpc_parse_value(env, param_array, "(ii)", &#38;x, &#38;y);
    if (env-&#62;fault_occurred)
        return NULL;

    /* Return our result. */
    return xmlrpc_build_value(env, "{s:i,s:i}",
                              "sum", x + y,
                              "difference", x - y);
}

int main (int argc, char **argv)
{
    /* Set up our CGI library. */
    xmlrpc_cgi_init(XMLRPC_CGI_NO_FLAGS);

    /* Install our only method (with a method signature and a help string). */
    xmlrpc_cgi_add_method_w_doc("sample.sumAndDifference",
                                &#38;sumAndDifference, NULL,
                                "S:ii", "Add and subtract two integers.");

    /* Call the appropriate method. */
    xmlrpc_cgi_process_call();

    /* Clean up our CGI library. */
    xmlrpc_cgi_cleanup();
}</PRE
></FONT
></TD
></TR
></TABLE
><P
>$B%3%s%Q%$%k$9$k$?$a$NF~NO$r<($7$^$9(B -</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="PROGRAMLISTING"
>bash$ CGI_CFLAGS=`xmlrpc-c-config cgi-server --cflags`
bash$ CGI_LIBS=`xmlrpc-c-config cgi-server --libs`
bash$ gcc $CGI_CFLAGS -o sumAndDifference.cgi sumAndDifference.c $CGI_LIBS</PRE
></FONT
></TD
></TR
></TABLE
><P
>$B$3$l$,=*N;$7$?$i!"(B<TT
CLASS="FILENAME"
>sumAndDifference.cgi</TT
>
      $B$r%&%'%V%5!<%P$N(B <TT
CLASS="FILENAME"
>cgi-bin</TT
> $B%G%#%l%/%H%j$K%3%T!<(B
      $B$7$F$/$@$5$$!#(B</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="xmlrpc-howto-python.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="xmlrpc-howto-java.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Python $B$G$N(B XML-RPC $B$N;H$$J}(B</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Java $B$G$N(B XML-RPC $B$N;H$$J}(B</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>