The clntudp_create() call creates an RPC client transport handle for the remote program using UDP transport.
Syntax
#include <rpc\rpc.h> #include <netdb.h> CLIENT * clntudp_create(addr, prognum, versnum, wait, sockp) struct sockaddr_in *addr; u_long prognum; u_long versnum; struct timeval wait; int *sockp;
Parameters
addr
Description
The clntudp_create() call creates a client transport handle for the remote program (prognum) with version (versnum). UDP is used as the transport layer.
Note: Do not use this procedure with procedures that use large arguments or return large results. UDP RPC messages can contain only 2K bytes of encoded data.
Return Values
NULL indicates failure.
Examples
#define RMTPROGNUM (u_long)0x3fffffffL#define RMTPROGVER (u_long)0x1L register CLIENT *clnt; int sock = RPC_ANYSOCK; /* can be also valid socket descriptor */ struct hostent *hp; struct timeval pertry_timeout; struct sockaddr_in server_addr; /* get the internet address of RPC server */ if ((hp = gethostbyname("RPC_HOST") == NULL) { fprintf(stderr,"Can't get address for %s\n",argv[2]); exit (-1); } pertry_timeout.tv_sec = 3; pertry_timeout.tv_usec = 0; bcopy(hp->h_addr, (caddr_t)&server_addr.sin_addr.s_addr, hp->h_length); server_addr.sin_family = AF_INET; server_addr.sin_port = 0; /* create UDP handle */ if ((clnt = clntudp_create(&server_addr, RMTPROGNUM, RMTPROGVER, pertry_timeout, &sock)) == NULL) { clnt_pcreateerror("clntudp_create"); exit(-1); }
Related Calls