问题标签 [xdr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
80 浏览

c - xdrstdio_create:阻塞调用

我正在尝试使用该rpc/xdr.h库来开发简单的客户端/服务器交互。我正在使用“直接连接”,其中 xdr 库将在套接字上接收并返回翻译后的数据:

使用XDR_data_typerpcgen 定义和编译的类型。假设 XDR_data_type 真的很大,而另一部分在xdr_XDR_data_type调用过程中关闭了连接(无论是否优雅),它会阻塞等待剩余的数据吗?这是一个使用 recv 解决的问题,我使用 SELECT() 来设置等待时间的超时。

我知道对此最自然的答案是“自己尝试”,但是这样我不能 100% 确定这种行为,我无法学习如何解决它,而且在手册页上我还没有发现任何关于它的东西。

感谢您的关注

编辑

这是 rpcgen 生成的代码xdr_XDR_data_type

是的,它返回一个 bool_t,但我想它取决于翻译本身(即,如果整数是枚举映射中的有效整数),而不是接收成功或不是数据本身。

0 投票
1 回答
598 浏览

c - 在 macOS 上编译 XDR 时出现问题(RPC types.h 问题)

我正在尝试编译一些关于 UNIX scokets 程序的源代码,在 Linux 上我没有问题,但在 macOS 上我遇到了类型定义问题。我不知道我可以在这里放多少细节,但我会尝试的。

需要编译的源代码有:

main位于的位置server_test.c

要编译我使用:

在 Linux 上运行它没有问题,但在 macOS 上我收到超过 20 个错误,所有这些都是关于(可能)缺少bool_t. /usr/include/rpc/*我想某些东西在 macOS 内部库中的文件中不起作用。

所以我寻找 if <sys/types.h>is included in /usr/include/rpc/xdr.h,它似乎没有丢失。

输出的一些第一行gcc是:

和许多其他非常相似的行。

对于那些想要加深的人,可以在此处获得资源。

可能是什么问题呢?

0 投票
0 回答
220 浏览

c - xdr_mem.c:没有这样的文件或目录

我编写了一个 C 服务器,它应该使用缓冲区范例将它通过 XDR 库请求的文件发送给客户端。该程序使用自定义结构。

这是 XDR 服务器的核心部分。

不幸的是,消息的编码会导致分段错误。

我用 GDB 检查了程序,我得到了这个回溯

其中 manage_clixrequest(socket_fd) 是我编写的函数。我不知道我是否对 XDR 库使用不当,或者我是否忘记包含某些内容以致 xdr_mem.c 未正确链接。你有什么想法/提示吗?

编辑 我报告了整个服务器功能和 xdr_file.c。

我发现我使用相同的缓冲区来存储文件字节并创建 XDR 流,这是一个错误。现在没有分段错误并且message正确填充了 XDR 结构,但是现在对生成的函数的调用xdr_bytes()返回 false 并且编码仍然失败。

0 投票
1 回答
428 浏览

c - 如何使用从 .x 文件生成的 XDR 结构(内存分配)

我希望得到一些关于这个案子的帮助。

我需要发送一条 XDR 消息,它由2 个文件组成(switch case == OK)组成。

假设我的代码中有一个message名为的对象response

如果我只能在消息中发送一个文件,我会这样做:

缓冲区为:

现在,我知道它是一个可变大小的数组(2 是最大长度)并且struct file fdata<2>;我会将它们索引为something[0]something[1]

我也知道我需要分配内存,但我不知道在这种情况下如何处理多个文件。

我需要为我需要发送的所有内容执行一个 malloc 吗?像这样的东西:

(2 * sizeof(uint32_t)):每个要发送的文件都有一个last_mod_time

另一个问题是如何引用每个文件结构:

.x 文件:

types.c(使用 rpcgen 生成):

感谢您阅读本文并尝试理解这一点。对此,我真的非常感激。

谢谢!

0 投票
1 回答
51 浏览

database - 实现聊天中消息的存储(RPC)

我必须使用 Sun RPC 实现聊天(首先编写 XDR 文件,然后通过 rpcgen 生成 .c 代码)。我想知道我应该如何为注册的用户实现消息的存储,但是当其他用户正在写作时,他们处于离线状态。这样用户,当他在线时,能够阅读在没有他的情况下在聊天中编写的所有内容。我在 Ubuntu 中编写。谢谢。对不起我的英语不好。

0 投票
0 回答
516 浏览

c - 如何通过 RPC 发送和接收图像

我在 ubuntu 14 中使用 Sun XDR RPC。我需要通过 RPC 发送和接收图像以进行压缩。这是我的 .x 文件

以下是客户端文件

我只提到发送图像的代码。最后服务器代码:

运行代码后,服务器端说文件是空的。在客户端经过一段时间后会生成以下错误。

我的代码背后的基本逻辑是客户端从文件中读取并将其存储在结构中,然后将此结构发送到服务器(RPC)。服务器将结构中的数据写入文件,然后打开该文件并压缩。但我不确定我的逻辑是否正确。

0 投票
1 回答
56 浏览

rpc - 两台主机之间使用 XDR 语言的 RPC 通信

XDR 语言如何确保两个主机(相同或不同架构/指令集)之间的通信独立于主机的字节顺序和指令集?

0 投票
0 回答
183 浏览

r - 使用 XDR RFC 4506 进行序列化

我需要将一些 R 对象序列化为符合 RFC 4506 标准的 XDR 格式。我知道serialize

通过一些谷歌搜索,似乎 R 格式为 RFC 1832,而不是 RFC 4506。我似乎找不到任何专门处理 XDR 序列化为不同格式的库。

谁能指点我一个好的图书馆,或者没有一些好的资源来手工做这个?在今天之前我没有任何使用 XDR 的经验,并且我已经意识到了这一点,这有点干。

0 投票
0 回答
155 浏览

c - 从 C 向 Python 发送 XDR 序列化数据的问题

我正在尝试使用 XDR 序列化 C 中的结构,并通过 tcp 套接字将序列化数据发送到 python。

我尝试使用 xdrmem_create() 创建 XDR 流,调用适当的包函数并将字符数组传递给套接字,以实现此目的,但是当我尝试反序列化流时,python 端出现 EOF 错误。

我能够成功地实现这个操作之间

C服务器和C客户端,也介于两者之间

python服务器和python客户端。

仅当我将它与 C 和 Python 一起使用时才会出现错误。

C 片段

Python 片段

我想知道在 C 和 Python 中序列化数据的方式之间是否存在不匹配。

0 投票
0 回答
489 浏览

go - 如何解码恒星 XDR

我正在研究恒星区块链,需要解码 GO 语言的恒星 XDR。我知道如何使用 JavaScript 进行解码,但在 GO 中找不到方法。

这工作正常。我尝试过但没有工作...

//预期输出

{类型:'付款',目的地:'GCKUXI3JRJANYOF3AM35Z22FGUGYYUIEBPE5TTZ7P3G6XAEFGYZC2POM',资产:资产{代码:'博客',发行人:'GDOPTRADBVWJR6BMB6H5ACQTAVUS6XMT53CDNAJZLOSTIUICIW57ISMF'},金额:'10'}

{类型:'支付',目的地:'GCKUXI3JRJANYOF3AM35Z22FGUGYYUIEBPE5TTZ7P3G6XAEFGYZC2POM',资产:资产{代码:'博客',发行人:'GDOPTRADBVWJR6BMB6H5ACQTAVUS6XMT53CDNAJZLOSTIUICIW57ISMF'},金额:'10'}

{类型:'支付',目的地:'GCKUXI3JRJANYOF3AM35Z22FGUGYYUIEBPE5TTZ7P3G6XAEFGYZC2POM',资产:资产{代码:'博客',发行人:'GDOPTRADBVWJR6BMB6H5ACQTAVUS6XMT53CDNAJZLOSTIUICIW57ISMF'},金额:'10'}

谁能帮我解决这个问题?