Link to Client Library

To make use of the IDL RPC functionality, you will need to do the following:

The command used to compile and link a client program to the IDL RPC client library follows the following format:

% cc -o example $(PRE_FLAGS) example.o -lidl_rpc

$(POST_FLAGS)

where PRE_FLAGS and POST_FLAGS are platform dependent. The proper flags for each UNIX operating system supported by IDL are contained in the file Makefile, located in the in the rpc subdirectory of the external subdirectory of the main IDL directory.

Example of IDL RPC Client API

To use the IDL client side API, execute the following sequence of steps:

  1. Call IDL_RPCInit() to connect to the server
  2. Perform actions on the server—get and set variables, run IDL commands, etc.
  3. Call IDL_RPCCleanup() to disconnect from the server.

Note: The IDL_RPC_InitWithLoopback function should be called if the client needs to connect to an RPC server that is registered with the loopback interface.

The code shown in the following figure is an example that can be used to set up a remote session of IDL using the RPC features. Note that this C program will need to be linked against the supplied shared library libidl_rpc. This code is included in the idldir/external/rpc directory as example.c.

 

#include "idl_rpc.h" int main()

{

CLIENT *pClient;

char cmdBuffer[512];

int result;

/* Connect to the server */

if( (pClient = IDL_RPCInit(0, (char*)NULL)) == (CLIENT*)NULL){ fprintf(stderr, "Can't register with IDL server\n"); exit(1);

}

 

/* Start a loop that will read commands and then send them to idl */

for(;;){

printf("RMTIDL> "); cmdBuffer[0]='\0'; gets(cmdBuffer);

if( cmdBuffer[0] == '\n' || cmdBuffer[0] == '\0')

break;

 

result = IDL_RPCExecuteStr(pClient, cmdBuffer);

}

 

/* Now disconnect from the server and kill it. */

if(!IDL_RPCCleanup(pClient, 1))

   fprintf(stderr, "IDL_RPCCleanup: failed\n");

exit(0);

}

Compile example.c with the appropriate flags for your platform, as described in Linking to the Client Library. Once this example is compiled, execute it using the following commands:

% idlrpc

Then, in another process:

% example