![](https://csdnimg.cn/release/download_crawler_static/4577556/bg5.jpg)
extern bool_t xdr_vector((XDR *xdrs,char *basep,
u_int nelem, u_int elemsize, xdrproc_t
xdr_elem));
extern bool_t xdr_float((XDR *xdrs,float *fp));
extern bool_t xdr_double((XDR *xdrs,double
*dp));
extern bool_t xdr_reference((XDR *xdrs,caddr_t
*xpp, u_int size, xdrproc_t roc));
extern bool_t xdr_pointer((XDR *xdrs,char
**objpp, u_int obj_size, xdrproc_t xdr_obj));
extern bool_t xdr_wrapstring((XDR *xdrs,char
**cpp));
extern u_long xdr_sizeof((xdrproc_t, void *));
上表中的函数都需要一个已经创建好的 XDR 流作为操作对象,并且都返回一个 bool_t
类型说明操作是否成功。关于这些函数的具体使用方法可以参见函数的帮助手册。
2.XDR 工作方式
实际上 XDR 库函数中提供了 2 种 XDR 流的支持,即工作在内存的 XDR 流和工作在 I/O
的 XDR 流。
调用函数 xdrmem_create,它可以用于在内存中创建一个 XDR 流,用户可以将需要传
递的数据结构在这个 XDR 编码流中编码,而后使用系统调用将编码发送到套接口缓冲区中,
当接收方收到这些数据后也在内存中创建 XDR 解码流,并从套接口中将数据复制到这个
XDR 流中,接着使用对应的函数进行解码,得到原来的数据结构。
图 11-2 说明了使用内存 XDR 的工作过程。
函数 xdrstdio_create 用于创建工作在 I/O 上的 XDR 流,函数的使用形式如下:
#include<rpc/xdr.h>
extern void xdrstdio_create((XDR *xdrs, FILE *file, enum xdr_op xop));