0

我正在为没有操作系统的嵌入式系统(Zybo)实现 TCP 客户端,而且我完全是 LwIP 的新手。在google了一段时间后,我发现了一些如何使用它的示例。

我想知道是否有任何方法可以通过它发送 C 结构,以及是否有任何可用的示例。该服务器是在 Linux 下的另一个 Zybo 板上实现的,它处理许多结构来控制状态机,因此它非常关键。

提前致谢。

4

2 回答 2

4

LwIP 有一个 TCP 栈实现,所以它能够(几乎?)完成常规 TCP 栈所能做的一切。

当然,它允许您通过套接字发送任意数据。标准堆栈和 LwIP 都没有对序列化的任何特定支持(您可能想要什么)。

您将需要定义一个协议,用于将您的结构序列化为字符数组,发送此数组,在另一端接收它并反序列化它。序列化结构的一种方法是所谓的实体序列化- 只需发送结构的原始内存占用并在另一侧接收它。这是非常简单、非常快速但非常不可靠的做法——如果发送者和接收者之间相同结构的内存布局不同怎么办?随着程序的发展,向结构中添加新字段也变得困难(您将始终必须在最后添加它们),并且几乎不可能删除字段。

更好的方法是真正了解各种序列化方法并找出最适合您的方法。

于 2016-05-31T15:06:44.477 回答
-1

通过使用 memcpy 函数解决了这个问题,类似于:

typedef struct{
    int ID;
    char name [100];
    int order;
}MESSAGE;

MESSAGE msg;
char b [sizeof(MESSAGE)];
memcpy(b, &msg, sizeof(MESSAGE));

这样做之后,它只是通过套接字发送字节数组。无论如何,感谢您的帮助。

于 2016-06-03T09:52:19.467 回答