With RPC, the target procedure has a machine address combined with a network address. The RPC receives and operates on any input parameters and passes the result back to the caller. The calling program receives the RPC result and continues execution. External Data Representation As was pointed out earlier, an RPC can be executed between two hosts that run completely different processor hardware. Data types, such as integer and floating-point numbers, can have different physical representations on different machines.
Similar problems occur with floating-point numeric data.
The solution to this problem involves the adoption of a standard for data interchange. XDR is essentially a collection of C functions and macros that enable conversion from machine specific data representations to the corresponding standard representations and vice versa. It contains primitives for simple data types such as int, float and string and provides the capability to define and transport more complex ones such as records, arrays of arbitrary element type and pointer bound structures such as linked lists. For more information on XDR, see the information sources listed in the References section of this article. The flow of data from caller to callee and back again is illustrated in Figure 1.