0

RPCを介して配列を送信しようとしていますが、データ配列が大きくなると「RPC:引数をエンコードできません」というメッセージが表示されます。私が見たものから10Kb未満。

これは失敗する行です。

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

参照されている構造体は次のとおりです。

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

このエラーを修正する方法、または任意の大きな配列を送信する別の方法はありますか?

4

1 に答える 1

4

他のRPCコマンドのマンページをチェックした後、私はこれを見つけました:

「警告:UDPの使用には欠点があります。UDPベースのRPCメッセージは最大8 Kバイトのエンコードされたデータしか保持できないため、このトランスポートは、大きな引数をとったり、大きな結果を返すプロシージャには使用できません。」

私は確かにUDPを使用していましたが、TCPに切り替えた後、メッセージはサーバーに適切に送信されます。

于 2012-12-03T13:15:28.093 に答える