我正在尝试使用XDR在C中序列化一个结构,并通过tcp套接字将序列化数据发送到python。
我尝试使用xdrmem_create()创建一个XDR流,调用适当的包函数并将字符数组传递给套接字,以实现这一点但是当我尝试反序列化流时,我在python端得到一个EOF错误。 / p>
我能够在
之间成功实现此操作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中序列化的方式是否存在不匹配。