xmlrpc-c is a programming library for writing an XML-RPC server or client in C or C++. XML-RPC is a standard network protocol to allow a client program to make a simple remote procedure call (RPC) type request of a server. It's like SOAP or CORBA, but much simpler. This library speaks the same XML-RPC as similar libraries for lots of other programming languages, with most of the popular extensions. The client library uses either w3c libwww or Curl for HTTP. The server library contains a complete lightweight HTTP (Web) server and also facilities for running with CGI under any Web server.
ulxmlrpcpp is a library to perform calls via XML-RPC in an object oriented approach. It is possible to create both client and server applications in multithreaded environments. Unlike other implementations, it does not insist on HTTP for transportation, but might also accept other ways (e.g. a simple serial line with a user-defined protocol). For HTTP as a transportation protocol, the following features are supported: cookies, SSL/TLS, proxy, SSL/TLS over a proxy, and chunked transfers. ulxmlrpcpp is also able to transmit data faster with binary XML.
Twisted is an event-based framework for Internet applications. It includes a Web server, an SMTP/POP3 server, a telnet server, an SSH server, an IRC server, a DNS server, a generic client/server pair for remote object access (Perspective Broker), and APIs for creating new protocols. It supports integration with GTK+, GTK+ 2, Qt, Tkinter, wxPython, Mac OS X (PyObjC) and Win32 event loops. It also supports TCP, SSL and TLS, UDP, Unix sockets, multicast, and serial ports. Supported protocols include HTTP, FTP, SMTP, POP3, IMAP, TOC, OSCAR (AIM and ICQ), SSH, DNS, IRC, NNTP, Jabber, SOCKSv4, Telnet, SIP (for VoIP), and XML-RPC and SOAP using external packages. Most protocols are supported as both servers and clients.
The SOAP to CORBA bridge/translator is written entirely in C++ and shows that it is indeed possible to do a generic translation of SOAP requests to CORBA method invocations and vice versa. This is implemented by using the CORBA Interface repository to match the incoming SOAP request to the corresponding CORBA service, build the dynamic invocation of the CORBA service, and generate the SOAP response (or possibly SOAP fault in the case of a CORBA user exception, for instance).