我必须问下面的问题:
我必须发送以下XDR消息:
struct Responde{
float numbers<>;
bool end;
}
我知道如何enconde数组(xdr_array)和bool(xdr_bool),但我怎么能:
1)编码结构? 2)通过套接字发送结构?
感谢所有人,但我不知道XDR,我必须使用它。再次感谢。
N.b。:标题显示我是指C语言和Linux环境。
答案 0 :(得分:0)
最灵活的解决方案当然是使用rpcgen
工具将XDR定义编译为C代码,然后可以在C应用程序中编译和使用。但是,如果您不想将此依赖项引入项目,您当然可以手动编写序列化代码。
RFC 1831将详细介绍这种结构的序列化方式,但以下是您需要了解的示例:
float
将数字编码为32位浮点数。bool
将布尔值编码为32位整数,其中true值编码为数字1
,false值编码为数字0
。例如,如果您的结构填充了3个浮点数并且值为true,那么您将获得以下字节流:
00 00 00 03 xx xx xx xx yy yy yy yy zz zz zz zz 00 00 00 01
x
,y
和z
的序列是浮点数。