svcudp_create Subroutine

Important: The subroutine is exported from both the libc and the libnsl libraries.

svcudp_create Subroutine Exported from the libc Library

Purpose

Creates a User Datagram Protocol/Internet Protocol (UDP/IP) service transport handle.

Library

C Library (libc.a)

Syntax

#include <rpc/rpc.h>

SVCXPRT *svcudp_create ( sock)
int sock;

Description

The svcudp_create subroutine creates a Remote Procedure Call (RPC) service transport handle based on UDP/IP and returns a pointer to it.

The UDP/IP service transport handle is used only for procedures that take up to 8KB of encoded arguments or results.

Parameters

Item Description
sock Specifies the socket associated with the service transport handle. If the value specified by the sock parameter is RPC_ANYSOCK, the svcudp_create subroutine creates a new socket and sets the service transport handle socket number to xprt->xp_sock. If the socket is not bound to a local UDP/IP port, then the svcudp_create subroutine binds the socket to an arbitrary port. The port number is set to xprt->xp_port.

Restrictions

In AIX® 5.2, the maximum number of open file descriptors that an RPC server can use has been set to 32767 so that compatibility can be maintained with RPC-server applications built on earlier releases of AIX.

Return Values

Upon successful completion, this subroutine returns a valid RPC service transport. If unsuccessful, it returns a value of null.

svcudp_create Subroutine Exported from the libnsl Library

Purpose

Creates a User Datagram Protocol/Internet Protocol (UDP/IP) service transport handle.

Library

Network Services Library (libnsl.a)

Syntax

#include <rpc/rpc.h>
SVCXPRT *svcudp_create (fd)
int fd;

Description

The svcudp_create subroutine creates a remote procedure call (RPC) service transport handle. The fd parameter specifies a file descriptor on the UDP transport. You can set the value of the fd parameter to RPC_ANYSOCK, so that the svcudp_create subroutine creates a new file descriptor on UDP transport and binds the file descriptor to a port.

The UDP/IP service transport handle is used only for procedures that take up to 8KB of encoded arguments or results.

Use the svc_create subroutine instead of the svcudp_create subroutine. The svcudp_create subroutine is compatible only with earlier versions of AIX.

Parameters

Item Description
fd Specifies the file descriptor associated with the udp transport.

Return Values

Item Description
a valid RPC service transport handle successful
a null value unsuccessful

Examples

#include <rpc/rpc.h>

static void dispatch(struct svc_req *, SVCXPRT *);

int main()
{
  SVCXPRT *svc=NULL;
  int fd;
  int protocol = IPPROTO_UDP;

  /* Set the file descriptor to RPC_ANYFD */
  fd = RPC_ANYSOCK;

  svc = (SVCXPRT *) svcudp_create(fd);
  if(svc==NULL)
  {
    fprintf(stderr,"svcudp_create() failed");
    exit(1);
  }

  /* create association between program & version number and dispatch routine */
  if(svc_register(svc, prognum, versnum, dispatch, protocol) == 0)
  {
    fprintf(stderr,"svc_register() failed");
    exit(1);
  }
  
  /* Accept client requests */
  svc_run();

  return 1;
}

static void dispatch(rqstp, transp)    /* remote procedure */
  struct svc_req *rqstp;
  SVCXPRT        *transp;
{
  /* Dispatch Routine Code */
}