gpt4 book ai didi

c - 通过 TCP 套接字编码并发送 XDR 结构 (C - Linux)

转载 作者:行者123 更新时间:2023-11-30 17:50:05 25 4
gpt4 key购买 nike

我必须问以下问题:

我必须发送以下 XDR 消息:

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

我知道如何编码数组(xdr_array)和 bool (xdr_bool),但我该怎么做:

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

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

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

最佳答案

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

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

  • XDR 中的所有数字均按大端顺序编码。
  • 结构中的所有字段均按 4 字节对齐,并且字段按照声明的顺序连接。
  • float 将数字编码为 32 位 float 。
  • 可变长度 float 数组被编码为 32 位整数,其中包含元素数量,后跟 float 。
  • bool 将 bool 值编码为 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

其中xyz序列是 float 。

关于c - 通过 TCP 套接字编码并发送 XDR 结构 (C - Linux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17467493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com