XDR - External Data Representation

XDR as a case study

XDR

Data Conversion

XDR Data Types

Implicit vs. Explicit Typing

XDR Programming

Conversion Terminology


XDR Buffer Creation

XDR filters

XDR Filters

bool_t xdr_int( XDR *xdrs, int *ip);

xdr_int()

xdr_int()

Complex Data Filters

xdr_array()

Inside xdr_array()

xdr_string()

Problem!!

Distributed Program Design

RPC Remote Procedure Call

Sun RPC

Procedure Arguments

Procedure Identification

Procedure Identification

Program Identifiers

Procedure Identifiers & Program Version Numbers

Iterative Server

Communication Semantics

Dynamic Port Mapping

The portmapper

More on the portmapper

Sun RPC Programming

RPC Programming

RPC Run-time Library

High-level Client Library

int callrpc( char *host,

High-Level Server Library

int registerrpc(

High-Level Server Library (cont.)

void svc_run();

High-Level Library Limitation

Low-level RPC Library

RPCGEN

rpcgen Output Files

> rpcgen foo.x

Client Creation

> gcc -o fooclient foomain.c foo_clnt.c foo_xdr.c

Server Creation

> gcc -o fooserver fooservices.c foo_svc.c foo_xdr.c

Example Protocol Definition

struct twonums {

};

program UIDPROG {

} = 0x20000001;