The xdr_array() call translates between an array and its external representation.
Syntax
#include <rpc\rpc.h> bool_t xdr_array(xdrs, arrp, sizep, maxsize, elsize, elproc) XDR *xdrs; char **arrp; u_int *sizep; u_int maxsize; u_int elsize; xdrproc_t elproc;
Parameters
xdrs
Return Values
The value 1 indicates success; the value 0 indicates an error.
Examples
struct myarray {
int *arrdata;
u_int arrlength;
};
void
xdr_myarray(xdrsp,arrp)
XDR *xdrsp;
struct myarray *arrp;
{
xdr_array(xdrsp,(caddr_t *)&arrp->arrdata,&arrp->arrlength,
MAXLEN,sizeof(int),xdr_int);
}
...
static int arrc_in[10],arrc_out[10];
...
u_long procnum;
register CLIENT *clnt;
enum clnt_stat cs;
struct timeval total_timeout;
...
total_timeout.tv_sec = 20;
total_timeout.tv_usec = 0;
...
myarrc_in.arrdata = & arrc_in&lbrk.0&rbrk.;
myarrc_in.arrlength = ( sizeof(arrc_in) / sizeof (int) );
myarrc_out.arrdata = & arrc_out&lbrk.0&rbrk.;
myarrc_out.arrlength = ( sizeof(arrc_out) / sizeof (int) );
cs=clnt_call(clnt, procnum, xdr_myarray, (char *) &myarrc_in, xdr_myarray,
(char *)&myarrc_out, total_timeout);
if ( cs != RPC_SUCCESS)
printf("*Error* clnt_call fail :\n");
...