XML-RPC for C and C++

A lightweight RPC library based on XML and HTTP.

Copyright 2001 Eric Kidd. All rights reserved. The contents of this website may be distributed under the same license terms as XML-RPC for C/C++. Funding for the initial releases of XML-RPC for C/C++ was provided in part by First Peer, Inc.

SourceForge Logo

Alternative Software

There are similar libraries available for many other programming languages: Java, Perl, and Python, to name a few. The older of these are listed at xmlrpc.com.

There are also various other libraries for C++. Here are some I know of:

  • libiqxmlrpc calls itself "a free, object-oriented XML-RPC implementation written in C++." Unlike Xmlrpc-c, you can use it to implement an HTTPS (SSL) server. This project has been releasing code regularly since March 2004.
  • XmlRpc++ is a lightweight XML-RPC library for C++. Unlike Xmlrpc-c, it requires no other libraries (With Xmlrpc-c, you need a separate HTTP library, e.g. Curl, for a client). Also, it consists of a single library whereas Xmlrpc-c is multiple libraries and you often need several of them for a single program. The project made releases from January 2003 through March 2003, and has a fair amount of current use.
  • ulxmlrpcpp is an "ultra lightweight" XML-RPC library. It depends upon the Expat library, whereas Xmlrpc-c has XML processing built in and optionally uses Libxml2. It does not use an external HTTP library, as the Xmlrpc-c client library does. The project has been releasing code regularly since October 2002.

And for C:

  • Libxr does SSL for servers, which Xmlrpc-c does not. It also claims as a key feature persistent connections over HTTP/1.1, like Xmlrpc-c. This project has been releasing code regularly since November 2006.
  • xmlrpc-epi. This project made releases between March 2001 and June 2002. It does not appear to be in current use.

Xmlrpc-c-palm is Xmlrpc-c, partially ported to PalmOS in 2004.

Perl RPC::Xmlrpc_c deserves special mention, because it is an XML-RPC client library for Perl that uses Xmlrpc-c (via a Perl module). Because most of the work of carrying on an XML-RPC conversation is done by code compiled from C, it is much faster than alternative Perl configurations which are Perl all the way down to the metal. You can find this Perl package on CPAN as RPC-Xmlrpc_c.

Something to keep in mind if you're trying to compare any of these to Xmlrpc-c in terms of popularity or vitality: Xmlrpc-c has been releasing most code via Sourceforge Subversion since September 2007. Sourceforge does not recognize this as a release mechanism, so its statistics undercount the amount of releasing and downloading that is going on.

Another thing that's important in understanding why people use and maintain both Xmlrpc-c and other packages that do the same thing is the history of Xmlrpc-c. While Xmlrpc-c already existed when most of these other projects started, Xmlrpc-c was frozen from April 2001 to October 2004. Until June 2005, the only C++ facility Xmlrpc-c offered was a minimal wrapper of the C libraries. Furthermore, there was no user documentation until early 2005, so it was not easy to use.

Statements on this page about the current state of things are as of November 2007.