服务器端上 RPC 的中间层
通常,服务器会注册每个过程,然后进入等待服务请求的无限循环。 因为只有一个过程要注册,所以服务器消息的主体将如下所示:
#include <stdio.h>
#include <rpc/rpc.h>
#include <utmp.h>
#include <rpcsvc/rusers.h>
char *nuser();
main()
{
registerrpc(RUSERSPROG, RUSERSVERS, RUSERSPROC_NUM,
nuser, xdr_void, xdr_u_long);
svc_run(); /* Never returns */
fprintf(stderr, "Error: svc_run returned!\n");
exit(1);
}
registerrpc 例程将 C 过程注册为对应于给定 RPC 过程号。 前三个参数,RUSERSPROG,RUSERSVERS和RUSERSPROC_NUM,指定要注册的远程过程的程序,版本和过程号。 该nuser参数是实现远程过程的本地过程的名称,xdr_void和xdr_u_long参数分别是远程过程的自变量和结果的 eXternal 数据表示 (XDR) 过滤器。