在C中创建类似UDP的库

在C中创建类似UDP的库,c,C,我希望用C语言实现某种传输协议,用于定制硬件。我有能力通过RF发送和接收数据,但我需要依靠一些协议来验证发送/接收的包的完整性,因此我认为实现某种UDP库是个好主意 当然,如果有任何方法,我可以修改UDP或TCP的现有实现,使其在我的RF设备上工作,这将是非常有帮助的。我认为唯一需要更改的是单个位的发送方式,如果我可以在UDP库(sys/socket.h)上更改它,这将节省我很多时间。在标准或C11中不存在 它通常是某一层的一部分。这些都是非常复杂的软件(只要你想要一些性能) 我建议使用一些现有

我希望用C语言实现某种传输协议,用于定制硬件。我有能力通过RF发送和接收数据,但我需要依靠一些协议来验证发送/接收的包的完整性,因此我认为实现某种UDP库是个好主意

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

在标准或C11中不存在

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


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


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


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

哪个特定硬件、哪个处理器、哪个操作系统、哪个C编译器等。。。。请编辑您的问题以改进它。没有操作系统,只有一个PIC 18F4550,我不确定编译器,我会调查它。如果您想要一个完整的IP堆栈,您可能会重新考虑您的硬件选择(或准备花费数年的工作)我不会假装编写一个多硬件兼容的库,我只需要一些方法来分割数据和验证包,在无效时丢弃它们,重新同步,我知道这并不容易,但当我已经有了物理层工作时,也不是那么难。改变硬件是不可能的,这是一个大学的项目,它已经在工作并获得批准,唯一缺少的部分是能够进行数据恢复。你能描述一下你的定制硬件吗?要知道它有多少内存是非常重要的。“生命太短暂,无法编写一个有竞争力的UDP层(这可能需要几十年时间)。”好吧,安装linux是不可能的,这就是我正在使用的系统:,我不可能在上面运行linux。我一直在环顾四周,有一些方法可以为inet输入/输出函数创建驱动程序,但是它确实非常复杂。实际上UDP本身非常简单。因为它在IP上几乎没有任何功能,而TCP要复杂得多。当然,如果IP层也需要实现,那么这是很困难的。但UDP基本上只添加了源端口和目标端口,以允许同时进行多个UDP通信。@PhilipStuyck:同意UDP非常接近IP。但是如果你深入了解细节,想要与现有事物紧密兼容,需要路由、数据包和拥塞管理等,那么IP是相当复杂的。@BasileStarynkevitch我没有说IP很简单,我说的是UDP很简单。即使如此,也可以从internet下载BSD实现的IP、TCP、UDP、ICMP。不需要实现你自己。