The whole program is:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include "rap.h"
static struct timeval TIMEOUT = { 25, 0 };
RAPVAR_READ_NAME_RESP_TYPE *rapvar_read_name_1(RAPVAR_READ_NAME_REQ_TYPE *argp, CLIENT *clnt)
{
RAPVAR_READ_NAME_REQ_TYPE *inproc = NULL;
RAPVAR_READ_NAME_RESP_TYPE *outproc = NULL;
RAPVAR_READ_NAME_RESP_TYPE clnt_res;
memset((char *)&clnt_res, 0, sizeof(clnt_res));
printf("Hello world!\n");
if (clnt_call (clnt, 1001, (xdrproc_t) inproc, (caddr_t) argp, /*---CRASH--- */
(xdrproc_t) outproc, (caddr_t) &clnt_res, TIMEOUT) != RPC_SUCCESS)
{
return (NULL);
printf("clnt_call FAILED!\n");
}
return (&clnt_res);
}
int main()
{
int Pclient= 1;
int pstat=0;
RAPVAR_READ_NAME_RESP_TYPE *result = NULL;
RAPVAR_READ_NAME_REQ_TYPE request;
CLIENT *clnt;
clnt = clnt_create("s4c",300456,1,"tcp");
request.head.userdef=1;
request.var.name="name";
request.var.type="robposdata";
request.var.domain=1;
request.var.number1=0;
request.var.number2=26; /*ROBTARGET_TRANSFER_TYPE */
result = rapvar_read_name_1(&request, clnt); /*Call the RPC function */
if (result == (RAPVAR_READ_NAME_RESP_TYPE *) NULL)
{
printf("'result' is NULL\n");
pstat = -1;
return(0);
}
pstat = result->resp.status;
if (pstat >= 0)
{
float *trans = NULL;
trans[0] = result->resp.RAPVAR_READ_NAME_RESPX_TYPE_u.data.RAPVAR_DATA_TYPE_u.robposdata.robtarget.trans.x;
trans[1] = result->resp.RAPVAR_READ_NAME_RESPX_TYPE_u.data.RAPVAR_DATA_TYPE_u.robposdata.robtarget.trans.y;
trans[2] = result->resp.RAPVAR_READ_NAME_RESPX_TYPE_u.data.RAPVAR_DATA_TYPE_u.robposdata.robtarget.trans.z;
printf("\nx = ");
printf("%f",trans[0]);
printf("\ny = ");
printf("%f",trans[1]);
printf("\nz = ");
printf("%f",trans[2]);
build (RAPVAR_READ_NAME_REQ_TYPE *argp, CLIENT *clnt)
rapvar_read_name_1( *argp, *clnt)
print result
return 0;
}
return 0;
}
A prototype of clnt_create is located in clnt.h, not rpc.h. however BOTH are 'included' in rap.h:
Code:
/*rap.h*/
/*
* Please do not edit this file.
* It was generated using rpcgen.
*/
#ifndef _RAP_H_RPCGEN
#define _RAP_H_RPCGEN
//#include <rpc/rpc.h>
#include "tirpc/rpc/rpc.h"
#include "tirpc/rpc/clnt.h"
<...>