Magic Squares Example

This example shows you how to create a client for the "magic square" server. This example demonstrates the use of a multi-dimensional dynamic array to hold the magic square implemented by a matrix class.

The client takes the rank of the matrix as an argument on the command line.

Step 1: Write the Main Program

We wrote an example client program for you: click here and select "File - Save As" from your browser's menu.

Step 2: Generate the SOAP Stub Routines

Before you can compile and run your  program, you must generate C/C++ sources using our stub compiler. The generated sources take care of the SOAP serialization and deserialization of the data required to access the SOAP service.

The input to our stub compiler is a specification of the names of the SOAP methods (with optional namespaces) and the data structures given as C/C++ declarations. For this example, the input to the compiler is a specification of the matrix class for the magic square (consisting of row vectors) and the RPC function:
class vector
{ public:
  int *__ptr;
  int __size;
  struct soap *soap;
  vector();
  vector(int n);
  ~vector();
  void resize(int n);
  int& operator[](int i);
};
class matrix
{ public:
  vector *__ptr;
  int __size;
  struct soap *soap;
  matrix();
  matrix(int n, int m);
  ~matrix();
  void resize(int n, int m);
  vector& operator[](int i);
};
int ns1__magic(int rank, matrix *result);
This is sufficient to generate all the C/C++ sources necessary to build your client!

To generate the sources, click here to use our SOAP Stub Compiler. This will produce a web page containing the C/C++ sources for:

soapStub.h
soapH.h
soapC.cpp
soapClient.cpp
soapServer.cpp
You need to save these sources to your local drive under the file names as indicated.

Two files are not generated but are required to build your application: stdsoap2.h and stdsoap2.cpp. Save these files to your local drive too.

Step 3: Compiling Your Client App

Compile the sources. For example, in Unix/Linux the command to compile would be:
g++ -o magic magicclient.cpp soapC.cpp soapClient.cpp stdsoap2.cpp

Step 4: Try it Out

Execute the command "magic 20" see an example client run.