我一直在寻找通过互联网上的多个网站,其实是想知道我们如何在.X写入文件规范中 .C产生同等功能 RPC文件。我参观了每一个网站建议使用以下各种规格的* .X文件:理解XDR规范创建一个* .X文件
program ADD_PROG {
version ADD_VERS {
int ADD(intpair) = 1;
} = 1;
} = 0x23451111;
因此,了解实际,我从被称为神经节的开源项目获得gm_protocol.x和产生等价的C源代码(gm_protocol_xdr.c)和C头文件(gm_protocol.h)使用rpcgen。
[[email protected] rpc]$ rpcgen -C gm_protocol.x
[[email protected] rpc]$
[[email protected] rpc]$ ll
total 24
-rw-rw-r-- 1 rohit rohit 5786 Oct 28 17:52 gm_protocol.h
-rw-rw-r-- 1 rohit rohit 3485 Oct 28 15:04 gm_protocol.x
-rw-rw-r-- 1 rohit rohit 8213 Oct 28 17:52 gm_protocol_xdr.c
令我惊讶的是,从我的学习和理解,gm_protocol.x不包含显示为上面的代码中任何这样的RPC规范,但仍然可以生成文件gm_protocol_xdr.c了过多的功能。
非常确定我无法理解XDR规范,因为我咨询了错误的来源或者他们已经过时。我找不到任何可以解释生成函数的方法的教程(虽然我找到了生成结构,枚举,联合等的规范)。
请帮助了解这些规格。
的联系似乎是有用的,但是这并没有回答我的问题。我的问题是** gm_protocol.x **没有像'program STLEN {'一样包含任何规范,但仍然rpcgen可以创建包含函数的gm_protocol_xdr.c **文件。 根据Richard Stevens撰写的“Unix Network Programming Vol 2”: ** RPC规范(RFC 1831)指出,RPC语言(有时称为RPCL)与XDR语言(在RFC 1832中定义)相同,除用于添加程序定义(描述程序,版本和程序)。** 那么,这些函数是如何在这里创建的? – Rohit 2014-10-29 08:47:52
rpcgen将为.x文件中定义的任何结构和枚举生成编码器/解码器函数.XDR编码的消息是一个字节数组,您需要将它们转换为相应的类型。 – kofemann 2014-10-29 08:56:07
这就是我之前想的。所以,这意味着不需要在'**。x **文件中放置'程序STRLEN {'来生成编码器/解码器功能。 +1确认。我会编辑你的答案,并添加完整的答案。谢谢。 – Rohit 2014-10-29 09:31:36