0

我必须问以下问题:

我必须发送以下 XDR 消息:

struct Responde{
 float numbers<>;
 bool end;
}

我知道如何编码数组(xdr_array)和布尔(xdr_bool),但我怎么能:

1)编码结构?2)通过套接字发送结构?

谢谢大家,但我不知道 XDR,我必须使用它。再次感谢。

Nb:标题如何显示我指的是C语言和Linux环境。

4

1 回答 1

0

最灵活的解决方案当然是使用该rpcgen工具将 XDR 定义编译为 C 代码,然后您可以在 C 应用程序中编译和使用这些代码。但是如果你不想在你的项目中引入这个依赖,你当然可以手动编写序列化代码。

RFC 1831将为您详细描述如何序列化这种结构,但以下是您的示例需要了解的内容:

  • XDR 中的所有数字都以大端顺序编码。
  • 结构中的所有字段都对齐到 4 个字节,并且字段按照声明的顺序连接。
  • Afloat将数字编码为 32 位浮点数。
  • 可变长度的浮点数组被编码为一个 32 位整数,其中包含元素的数量,后跟浮点数。
  • Abool将布尔值编码为 32 位整数,其中真值编码为数字1,假值编码为数字0

例如,如果您的结构填充了 3 个浮点数并且值为 true,您将获得以下字节流:

00 00 00 03  xx xx xx xx  yy yy yy yy  zz zz zz zz  00 00 00 01

其中 和 的序列是x浮点数。yz

于 2013-11-08T15:23:43.390 回答