Я пытаюсь отправить массив через RPC, но я получаю «RPC: невозможно кодировать аргументы», когда массив данных становится слишком большим. Под 10Кб из того что я видел.
Это линия, которая терпит неудачу.
xdr_bytes (xdrs, (char **)&objp->data, (uint*)&objp->len, objp->len))
Вот структура, на которую ссылаются.
struct dataStruct {
unsigned int len;
u_char *data;
};
Есть ли способ исправить эту ошибку или другой способ отправки произвольно больших массивов?
После проверки man-страниц для других команд RPC я нашел это:
«Предупреждение. Использование UDP имеет свои недостатки. Поскольку RPC-сообщения на основе UDP могут содержать до 8 Кбайт закодированных данных, этот транспорт нельзя использовать для процедур, которые принимают большие аргументы или возвращают огромные результаты».
Я действительно использовал UDP, и после переключения на TCP сообщения отправляются на сервер должным образом.
Других решений пока нет …