首页
学习
活动
专区
圈层
工具
发布

LwIP实现
EN

Stack Overflow用户
提问于 2016-05-31 14:59:18
回答 2查看 1K关注 0票数 0

我正在为一个没有操作系统的嵌入式系统(Zybo)实现一个TCP客户端,我在LwIP中完全是新手。在谷歌搜索了一段时间之后,我发现很少有关于如何使用它的示例。

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

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-31 15:06:44

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

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

您将需要定义一个协议来将您的结构序列化为字符数组,发送这个数组,在另一边接收它,然后反序列化它。一种对结构进行锯齿化的方法是所谓的实体序列化--只需发送结构的原始内存足迹并在另一边接收它。这是非常简单,非常快,但非常不可靠的方法--如果相同结构的内存布局在发送方和接收方之间有所不同怎么办?随着程序的发展,也很难向结构中添加新的字段(最终必须添加它们),而且几乎不可能删除一个字段。

更好的方法是真正理解各种序列化方法,以及最适合您的图一。

票数 4
EN

Stack Overflow用户

发布于 2016-06-03 09:52:19

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

代码语言:javascript
复制
typedef struct{
    int ID;
    char name [100];
    int order;
}MESSAGE;

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

这样做之后,它只是通过套接字发送字节数组。不管怎样,谢谢你的帮助。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37549186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档