我正在尝试使用 XDR 序列化 C 中的结构,并通过 tcp 套接字将序列化数据发送到 python。
我尝试使用 xdrmem_create() 创建 XDR 流,调用适当的包函数并将字符数组传递给套接字,以实现此目的,但是当我尝试反序列化流时,python 端出现 EOF 错误。
我能够成功地实现这个操作之间
C服务器和C客户端,也介于两者之间
python服务器和python客户端。
仅当我将它与 C 和 Python 一起使用时才会出现错误。
C 片段
#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 中序列化数据的方式之间是否存在不匹配。