没有合适的资源?快使用搜索试试~ 我知道了~
libcoap 作为一个重要的 CoAP 开源实现,完整实现了 RFC 7252。很多优秀的 IoT 产品都用到了 libcoap,libcoap 为资源受限的设备(例如计算能力,射频范围,内存,带宽或网络数据包大小)实施轻量级应用程序协议,是一个非常优秀的开源项目。 网络上并没有过多关于使用 libcoap 开发的相关资料,本文以最新版 libcoap 4.2.1 为基础,从 Socket 开始,以最简单的例子(实现起来并不简单)实现一个简单的 server,达到使用 libcoap 进行开发的目的。 准备工作 链接 文章项目源码 https://github.com/liya
资源推荐
资源详情
资源评论
libcoap 接口分析与接口分析与 CoAP 协议开发协议开发
libcoap 作为一个重要的 CoAP 开源实现,完整实现了 RFC 7252。很多优秀的 IoT 产品都用到了 libcoap,libcoap 为资源受
限的设备(例如计算能力,射频范围,内存,带宽或网络数据包大小)实施轻量级应用程序协议,是一个非常优秀的开源项
目。
网络上并没有过多关于使用网络上并没有过多关于使用 libcoap 开发的相关资料,本文以最新版开发的相关资料,本文以最新版 libcoap 4.2.1 为基础,从为基础,从 Socket 开始,以最简单的例开始,以最简单的例
子(实现起来并不简单)实现一个简单的子(实现起来并不简单)实现一个简单的 server,达到使用,达到使用 libcoap 进行开发的目的。进行开发的目的。
准备工作准备工作 链接链接
文章项目源码 https://github.com/liyansong2018/libcoap-demo
libcoap 库项目地址 https://github.com/obgm/libcoap
CoAP 协议分析与测试 https://blog.csdn.net/song_lee/article/details/105599391
本文还要求你对 CoAP 协议有一个基本的了解,并且已经安装了 libcoap,详情请访问:CoAP 协议分析与测试,其中也有关
于 libcoap 的安装和一些常见问题。
1 libcoap
libcoap 库包含太多的数据类型和 API,这里只分析几个较为重要和常见的,更多文档请参考 libcoap 官方 API 文档 。
1.1 数据类型分析数据类型分析
coap_context_t 结构体存储的是 CoAP 栈的全局状态,可以理解为一个 CoAP 对象,这个对象包括很多 CoAP 属性,是最重要
的一个结构体
typedef struct coap_context_t {
coap_opt_filter_t known_options;
struct coap_resource_t *resources; /**< hash table or list of known
resources */
struct coap_resource_t *unknown_resource; /**< can be used for handling
unknown resources */
...
}
coap_resource_t 存储 CoAP 资源类型,为了节省空间,采用位域的方式,以位为单位来指定其成员所占内存长度,如下所示,
每个成员变量占据一比特,例如,我们可以根据 ->dirty 的值来判断资源是否变化
typedef struct coap_resource_t {
unsigned int dirty:1; /**< set to 1 if resource has changed */
unsigned int partiallydirty:1; /**< set to 1 if some subscribers have not yet
* been notified of the last change */
unsigned int observable:1; /**< can be observed */
unsigned int cacheable:1; /**< can be cached */
unsigned int is_unknown:1; /**< resource created for unknown handler */
...
} coap_resource_t;
1.2 API
coap_make_str_const
coap_str_const_t *coap_make_str_const(const char *string);
作用:将 string 类型转换为 coap_str_const_t 类型的常量字符串
返回:指向 coap_str_const_t 类型的指针
入参:字符串(char 类型的指针)
coap_resource_init
coap_resource_t *coap_resource_init(coap_str_const_t *uri_path,
int flags);
作用:创建新的资源对象,将 uri 路径初始化为字符串
返回: coap_resource_t 对象
入参:uri_path,新资源的 uri 字符串路径
flags,内存管理,特别是内存释放
coap_register_handler
void coap_register_handler(coap_resource_t *resource,
coap_request_t method,
coap_method_handler_t handler);
作用:将指定的资源注册为请求类型的消息处理程序
返回:空
资源评论
weixin_38733787
- 粉丝: 2
- 资源: 843
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功