gpt4 book ai didi

用 C 创建类似 UDP 的库

转载 作者:行者123 更新时间:2023-11-30 18:54:52 25 4
gpt4 key购买 nike

我希望用 C 语言实现某种传输协议(protocol),以便在定制硬件上使用。我有能力通过 RF 发送和接收,但我需要依赖某种协议(protocol)来验证发送/接收的包完整性,因此我认为实现某种 UDP 库是个好主意。

当然,如果有任何方法可以修改 UDP 或 TCP 的现有实现,使其在我的 RF 设备上工作,那将会有很大帮助。我认为唯一需要更改的是发送单个位的方式,如果我可以在 UDP 库 (sys/socket.h) 上更改它,它将节省我很多时间。

最佳答案

UDP 在标准 C99 或 C11 中不存在。

它通常是某些 Internet Protocol 层的一部分。这些是非常复杂的软件(只要您想要一些性能)。

我建议使用一些现有 operating system 内核(例如 Linux)并为您的设备编写网络驱动程序(例如用于 Linux kernel )。生命太短暂,无法编写一个有竞争力的 UDP 之类的层(这可能需要您数十年的时间)。

<小时/>

附录

显然,问题中提到的 UDP 令人困惑。根据您的评论(应该在问题中),您只需要在小型 8 位 PIC 18F4550 微 Controller (32Kbytes ROM + 2Kbytes RAM)上使用一些串行协议(protocol)。在不知道其他限制的情况下,我会建议一个微小的“文本”协议(protocol)(例如,在 ASCII 行中,每行不超过 128 字节,\n 终止......),我会放一些简单的其中的十六进制校验和。在 20 世纪 80 年代,Hayes modems 就有这样的事情。

然后您应该做的是首先定义并记录协议(protocol)(例如消息行的 BNF 语法),然后实现它(可能使用缓冲和有限状态自动机技术)。您可能会发明一些消息格式,例如DOFOO?123,456%BE53 后跟换行符,表示使用参数 123 执行命令 DOFOO,然后使用 456 和十六进制校验和BE53

关于用 C 创建类似 UDP 的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29339001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com