将XDR序列化数据从C发送到Python的问题

时间:2018-06-14 13:05:27

标签: c xdr

我正在尝试使用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中序列化的方式是否存在不匹配。

0 个答案:

没有答案