RPC:xdr_bytes当数组太大时“无法编码参数”

时间:2012-12-03 00:16:59

标签: c++ rpc sunrpc

我正在尝试通过RPC发送数组,但是当数据数组变得很大时,我收到“RPC:无法编码参数”。距我所见的10Kb以下。

这是失败的行。

xdr_bytes (xdrs, (char **)&objp->data, (uint*)&objp->len, objp->len))

这是被引用的结构。

struct dataStruct {
    unsigned int len;
    u_char *data;
};

有没有办法修复此错误,或者其他方式发送任意大型数组?

1 个答案:

答案 0 :(得分:4)

在检查其他RPC命令的联机帮助页后,我发现了这个:

“警告:使用UDP有其缺点。由于基于UDP的RPC消息最多只能容纳8 KB的编码数据,因此该传输不能用于需要大量参数或返回大量结果的过程。”

我确实使用UDP,切换到TCP后,消息会正确发送到服务器。