0

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

4

0 回答 0