我在两台不同的机器上有一个C结构 - 服务器和客户端。例如:
struct account {
int account_number;
char *first_name;
char *last_name;
float balance;
};
我的问题是在机器之间复制数据的可能方法是什么?也许我可以尝试转换XML中的数据并复制它?或者我可以使用数组?
答案 0 :(得分:1)
最简单,最轻量级的解决方案 - 如果您以FILE*
的形式在两台计算机之间建立连接 - 可能是在一端使用fprintf
进行传输,并使用{{进行解码1}}另一方面。
protocol.h:
fscanf
发件人:
typedef struct _packet packet_t;
struct _packet {
int account_number;
char *first_name;
char *last_name;
float balance;
};
static const char packet_fmt[]=" acct: %d fname: %s sname: %s balance: %f";
监听器:
...
printf(packet_fmt, acct, "Greg", "Benison", bal);
...
这可能足以满足您的四字段结构,但如果您预期其结构发生变化或显着增长,那么追求XML,JSON或其他更正式的编码可能是有意义的。
答案 1 :(得分:1)
如果您熟悉C,那么我会使用TCP套接字来传输和接收您的数据。您需要基本上以原始字节和指定顺序传输数据,以便在收到时对其进行解码。您将需要允许机器的细节,并且您还需要发送其他数据字段以指定可变长度名称的长度(以便您知道要接收多少字节)。通常,最好添加一个字段,指示要发送的数据包的总大小。基本上,您可以根据自己的选择对数据包进行编码,并提供以相同方式解压缩数据,另一端将传输数据。也许这是一种老式的做事方式,但我在日常工作中一直使用这种方法在机器之间传输数据。这是您可以使用的众多选项之一。您可以将数据作为其他格式的xml发送,但发送原始字节会产生较小的数据包(这可能是也可能不是您需要解决的问题)。希望这会有所帮助。