Проблема с отправкой сериализованных данных XDR с C на Python
Я пытаюсь сериализовать структуру в C с использованием XDR и отправить сериализованные данные на Python через сокет TCP.
Я попытался использовать xdrmem_create() для создания потока XDR, вызова соответствующих функций пакета и передачи массива символов в сокет, чтобы добиться этого, но я получаю ошибку EOF на стороне Python, когда пытаюсь десериализовать поток.
Я смог успешно выполнить эту операцию между
C-сервер и C-клиент, также между
сервер Python и клиент Python.
Я получаю сообщение об ошибке только тогда, когда я использую его с C и Python.
С фрагмент
#include<rpc/rpc.h>
....
xdrmem_create(&xdrs, arr, MAXLENGTH, XDR_ENCODE);
if(!xdr_person(&xdrs,&pkt)){
printf("ERROR");
};
.....
send(new_fd, arr, MAXLENGTH, 0)
Фрагмент Python
import xdrlib
.....
data = s.recv(4)
unpacker = xdrlib.Unpacker(data)
message_size = unpacker.unpack_uint()
data = s.recv(message_size)
unpacker.reset(data)
person={}
person["name"] = unpacker.unpack_string().decode()
person["age"] = unpacker.unpack_int()
person["flag"] = unpacker.unpack_bool()
person["errEnum"] = unpacker.unpack_enum()
Интересно, есть ли несоответствие между способами сериализации данных в C и Python.