RPC:xdr_bytes "Can't encode arguments"当阵列太大时

RPC: xdr_bytes "Can't encode arguments" when array is too large

本文关键字:encode arguments 阵列 xdr bytes Can RPC      更新时间:2023-10-16

我正在尝试通过 RPC 发送数组,但是当数据数组变大时,我收到"RPC:无法编码参数"。从我所看到的不到 10Kb。

这是失败的行。

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

下面是引用的结构。

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

有没有办法修复此错误,或者另一种发送任意大数组的方法?

在检查了其他 RPC 命令的手册页后,我发现了这个:

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

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