问题标签 [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.
c - 了解函数“xdrmem_create”中的第二个参数
我正在调试神经节,并通过 UDP 通道使用 XDR 发送数据。我发现函数的第二个参数xdrmem_create ( xdrs, addr, size, op)
很奇怪。其中参数的语法如下:
这个函数的参考在这里。
如您所见,该函数的第二个参数(xdrs)是一个字符数组。这同样在神经节的功能之一中声明为char msgbuf[GANGLIA_MAX_MESSAGE_LEN];
。
在 ganglia 中调用上述函数后,通过调用where是一种变量类型的函数,xdrmem_create(&x, msgbuf, GANGLIA_MAX_MESSAGE_LEN, XDR_ENCODE);
将 ganglia 特定结构 ( cb->msg
) 中的适当数据编码为 XDR 格式。xdr_Ganglia_value_msg(&x, &(cb->msg))
x
XDR
稍后,为了通过 UDP 通道发送编码数据,该函数Ganglia_udp_send_message( udp_send_channels, msgbuf, len);
被调用。为了了解这个 XDR 数据是如何发送的,我尝试打印msgbuf
using的内容的输出,fprintf
但它总是不打印任何内容,尽管它是一个字符数组。而且很明显,编码数据发送成功。
所以,我的问题是,编码成 XDR 格式的数据是如何在这里通过 UDP 通道发送的?
我在这里粘贴了来自 ganglia 的部分代码。您可以从第 131 到 136 行看到供您参考。
rpc - 什么是可变长度字符串数组的正确 XDR 语法?
我正在阅读RFC 4506以了解 XDR 数据定义语言。
它提到可变长度数组声明如下。
它还提到可变长度字符串声明如下。
不幸的是,它显示具有可变长度字符串数组的唯一方法是链表,这似乎非常手动。
有没有更简单或更正确的方法来声明一个可变长度的字符串数组?
javascript - XDomainRequest 有时会随机中止
XDomainRequest 大多数时间都可以正常工作,但有时会在 ie9 中特别中止。有谁之前经历过这个吗?
如果您想看到这是我使用的 xdr 实现:
c - 了解 XDR 规范以创建 *.x 文件
我一直在浏览互联网上的几个网站,实际上想知道我们如何在.x文件中编写规范以在用于 RPC 的.c文件。我访问的每个站点都建议在*.x文件中使用以下类型的规范:
因此,为了实际理解,我从一个名为 ganglia 的开源项目中获得了gm_protocol.x ,并使用 rpcgen生成了等效的 C 源代码 ( gm_protocol_xdr.c ) 和 C 头文件 ( gm_protocol.h )。
令我惊讶的是,根据我的学习和理解,gm_protocol.x 不包含任何如上面代码所示的 RPC 规范,但它仍然可以在文件 gm_protocol_xdr.c 中生成太多函数。
可以肯定的是,我无法理解 XDR 规范,因为要么我查阅了错误的来源,要么它们已经过时了。我找不到任何可以解释生成函数的方法的教程(尽管我找到了生成结构、枚举、联合等的规范)。
请帮助学习这些规范。
ajax - XDomainRequest onLoad 在 IE8 中未正确触发
我正在向 google geocode api 发出请求,以获取给定邮政编码的纬度和经度。这在所有浏览器栏 IE8 中都可以正常工作(震惊!)。
为了解决这个问题,我为 IE 实现了 XDomainRequest。
这就是我所说的
我还在继续之前检查错误
现在我说它不起作用,那是一个谎言,它确实起作用了它只是不能立即起作用,所以当它不应该发生时,错误就会被触发。
我已经尝试在 IE8 中进行调试,这似乎就是这样做的
- 从表单元素获取邮政编码
- 使用邮政编码跳转到功能
- 创建新的 XDomainRequest
- 跳过 xdr.onload
- 创建新的 XDomainRequest
- 跳出条件下到 isPostcodeValid 并返回错误
现在请求确实有效,我已经对其进行了测试,问题是它不能立即工作,因此会跳入错误。
任何人都知道为什么它会跳过负载而不是进入负载?
谢谢!
c - 这个 RPC xdr 副本有意义吗?
我有这个T_Struct
来自电线的 RPC 结构。我想复制它,但我不想编写一个单独的函数来处理其成员的所有结构、分配和数组(尤其是我必须对其他结构的音调做同样的事情。 )
既然我已经有了解码、编码和免费的方法,那么有这样的东西是否有意义:
我明白最后,我也可以打电话xdr_free((xdrproc_t)xdr_T_Struct, (char *)destination ) ;
c - rpc 指针未显示正确的结果
所以我正在尝试使用一些 RPC 函数。
基本上我想将 2 个 2*2 矩阵相乘,客户端发送 2 个矩阵,客户端计算并发送矩阵。
我的客户收到的矩阵不是我发送的。
有人能解释一下为什么它不能正常工作或我犯了什么错误吗?
c - 无法在远程过程调用中对参数进行编码以进行服务器注册
我有点疯狂地试图弄清楚为什么这不起作用。我正在使用 sunrpc,但生成的服务器代码会抛出以下内容:
无法注册服务:RPC:无法编码
无法注册的参数(MYRPC、MYRPC_V1、udp)。
我不知道为什么会这样。我正在执行以下操作来生成存根:
这是我的 XDR
编译 .x 文件以创建客户端、服务器、xdr 编组代码或标头时,我没有收到任何错误。我还实现了 rpc 接口,但由于在我尝试启动生成的服务器 (myrpc_svr.c) 时引发了该错误,因此无法对其进行测试。
这个错误消息甚至指的是什么论据?它不喜欢我在 XDR 中定义的函数的实现吗?为什么编码参数会导致程序甚至不注册?
实际上,我很惊讶这不是客户端错误消息
c - 如何打印作为 XDR 接收的字符串?
我有一个客户端和一个服务器,它们使用 XDR 表示法通过套接字相互通信。Unix环境。服务器正确地向客户端发送一个字符串(我检查了发送的字节数,它是正确的),客户端接收到字符串但它不正确,因为 printf 打印 NULL。
代码服务器:b 是 a (char **)
相反,这是客户端代码:
任何想法?谢谢你的建议
posix - 用于 RPC 的 XDR 中的 ssize_t 数据类型
我正在编写一个 RPC 应用程序。我需要在 C 部分使用 ssize_t 数据类型,并且需要通过网络发送。在 IDL 中我应该用什么表示 ssize_t?我可以将其转换为 int,但我想知道正确的方法,而不仅仅是转换为 int,不确定这是否是正确的方法。