我需要实现相当简单的网络协议:有微控制器(语言为C)和Java应用程序的设备,他们应该进行通信:我需要实现固件更新,也许还有其他一些事情。
至少,我需要将一些数据结构作为标题传输。
只有丑陋的方式出现在脑海中:
我可以在C端声明压缩结构,并在Java端以某种方式处理相同的数据流。 所以,如果我的结构发生了变化,那么我需要对双方进行更改:C和Java。我非常不喜欢这个。
有没有更好的方法呢?也许是这样的:我应该用一些特殊的格式编写协议结构,然后一些实用程序可以为C和Java端生成代码。
或者,也许,不同的东西。
我很高兴看到建议。
答案 0 :(得分:3)
您可能希望使用标准化的表示法来表示数据传输,例如JSON。以下是有关在c。
中解析JSON的一些信息如果是我的项目,我可能会选择刚刚打包的数据结构。希望一旦您的项目成熟,对数据结构的更改是最小的,并且仅在主要版本期间发生。您可以在数据结构中保留版本标记,以便在需要时处理旧数据格式。
答案 1 :(得分:3)
此问题的一个常见解决方案是使用Google的protobuf。但是,就像你一样 指出你需要它在微控制器环境中工作我认为你可以看 进入protobuf-c,这是protobuf的纯C版本。
答案 2 :(得分:0)
你能描述一下协议的细节吗?如果是有状态的还是无国籍的? 如果您的协议是无状态的,那么请查看Web服务(尤其是REST-WS)。这是众所周知的跨平台沟通实践。