<< 返回
东方之晓 RPCGen使用手册
下文是从UNIX系统上的rpcgen(1)操作页修改而来的。
名称
rpcgen-一个RPC协议编译器
使用方法
1、rpcgen infile
2、rpcgen -c|-h|-l|-m [-o outfile]
infile
3、rpcgen -s transport [-o outfile]
infile
描述
rpcgen是一个编译器,它从一个协议规范文件(通常以.x为后缀)产生C源代码。当不附带选项标记运行时,rpcgen从一个叫做proto.x的输入文件生成下列C文件。
* proto.h
数据类型和函数模型的头文件。
* proto_xdr.c
将变量编码/解码并返回值的XDR程序,被客户机程序和服务器两者使用。
* proto_svc.c
服务器端stub。
这个主要包含启动和注册服务器的代码、接受客户机呼叫请求的发送程序和分配对服务器执行函数的调用。
* proto_clnt.c
客户端stub。
C-预处理程序,CPP,被rpcgen用来预处理那些输入文件。因此,rpcgen并不直接解释.x文件,而是对CPP的输出进行操作。rpcgen处理多重传输从而生成以上列出的每个文件类型,在每一个传递期间,它定义一个不同的CPP符号:
* RPC_HDR 在编译为头文件时被定义
* RPC_XDR 在编译为XDR程序时被定义
* RPC_SVC 在编译为服务器端stub时被定义
* RPC_CLNT 在编译为客户端stub时被定义
例如,要从proto.x生成头文件proto.h,rpcgen经过下列步骤:
1、CPP -DRPC_HDR USER_CPP_FLAGS proto.x
> tmpfile
2、把tmpfile编译为proto.h
3、删除tmpfile
东方之晓 RPCGen for Win32 在 MS Visual C++中使用
CL.EXE 作为缺省的C-预处理程序(使用标记 /C /EP /nologo)。CL.EXE必须是在搜索路径中,否则rpcgen将提示"预处理失败"错误。VC++使用有着正确的环境设置的叫做vcvars32.bat的脚本。
你可以通过设置2个环境变量而让rpcgen使用一个不同的CPP,即RPCGEN_CPP
和 RPCGEN_CPP_FLAG,分别对应于CPP程序与关联标记。
Rpcgen做了一点它自己的预处理。任何以%开头的行都直接传递到输出文件,不被rpcgen中断。
你可以通过保留那些未定义的数据类型,来定制你的XDR程序中的一部分。对于每个未定义的数据类型,rpcgen将假定存在一个名为xdr_的程序,预定为未定义类型的名称。
可选项
标记
|
变量
|
描述
|
-c |
none无 |
编译为XDR程序 |
-h |
none无 |
编译为C数据定义 (一个头文件) |
-l |
none无 |
编译为客户端stub |
-m |
none无 |
编译为服务器端stub,但不生成"main"函数。这个选项对于回呼程序,和那些需要编写自己的"main"函数来设置初值(初始化)的人来说是很有用的。 |
-o |
output filename输出文件名 |
指定输出文件的名称。如果什么也不指定,将使用标准输出(只有-c,-h,-l和-s方式)。 |
-s |
transport name传输器名(udp或tcp) |
编译为服务器端stub,使用其设定的传输器。支持的传输器是udp和tcp。这个选项可以多次调用,以致编译一个提供多重传输器服务的服务器。当这一选项不设定时,rpcgen生成一个UDP与TCP传输器都能接收的服务器。 |
Portmapper服务(仅Windows
NT)
当一个RPC服务器开始时,它在其本地机器上用Portmapper注册它的程序号和端口。在一个客户机程序呼叫一个RPC之前,它必须和在服务器机器上运行的portmapper联系,找到RPC服务器的端口号。
若要安装portmap服务,请从命令行运行
> pmapsvc
-i
若要卸载,请从命令行运行
> pmapsvc
-u
若要查看状况
> pmapsvc
-v
若要获得帮助,请运行 pmapsvc -h
若要开始服务,请去控制面板,打开图标服务,找到PowerRPC
Portmapper并启动它。
如有更多的问题请去技术服务提出。
|