【发布时间】:2012-12-22 00:07:46
【问题描述】:
我有以下结构,我正在尝试通过网络发送到另一个应用程序
struct protocol
{
char protocol;
char field1;
char field2;
char field3;
char field4;
char field5;
char field6;
char field7;
char field8;
char msg_id;
char msg_length;
char *msg;
};
我遇到的问题是我不确定如何通过网络发送此结构,因为其中有一个指向字符串的指针,并且 memcpy 到缓冲区的结构不起作用,如下所示唯一的办法吗?
memcpy (buffer, protocol->protocol, char)
memcpy (buffer, protocol->field1, char)
...
memcpy (buffer, protocol->msg, protocol->length)
然后发送缓冲区
【问题讨论】:
-
你是如何序列化这个结构的?
-
我不是,我该怎么做?
-
这取决于您的发送者和接收者。基本上,您发送的任何数据都需要成为字节流,正如您所指出的,这意味着需要解析嵌入式指针。问题是,你如何把它变成一个流取决于对方的期望,因为它会重新组装。
-
好的,我明白你在说什么,所以基本上像我提到的 memcpy 将数据复制到另一个变量就是序列化结构,对吗?
-
是的。序列化基本上就是这样,但是有很多序列化的方法,这就是协议的用武之地。