【2018-09-01】COAP简单笔记

📅 2026/7/21 8:57:11
【2018-09-01】COAP简单笔记
[历史归档]本文原发布于 cstriker1407.info 个人博客内容为历史存档仅供参考。发布时间2018-09-01 标题COAP简单笔记分类编程 标签coapCoAP简单笔记什么是CoAP?测试本文参考《 http://baijiahao.baidu.com/s?id1572926441162140wfrspiderforpc 》《 https://blog.csdn.net/robert_tina/article/details/78864345 》《 https://blog.csdn.net/qq_40062917/article/details/78258923 》什么是CoAP?coap 是在udp上的代替了在tcp上的http由于在http协议太大coap协议却很小的所以很适合嵌入式开发的环境同样对比的还有mqtt协议在这里不讲解。CoAP是受限制的应用协议(Constrained Application Protocol)是IETF组织发布的互联网系列标准之一(RFC7252)。在当前由PC组成的世界里信息交换通过HTTP/TCP来实现。但是对于小型设备而言实现TCP和HTTP协议显然是一个过分的要求。为了让小设备可以接入互联网CoAP协议被设计出来。CoAP协议是为物联网中资源受限设备制定的应用层协议(注CoAP已经支持基于TCP本文暂不展开)。CoAP协议特点通过解读CoAP协议可以看出CoAP协议明显的是针对物联网应用而生包括1.基于REST构架而REST正是互联网资源访问协议的一般性设计风格。2.基于轻量级的UDP协议并且允许IP多播。3.定义了带有重传机制的事务处理机制同样可实现可靠传输。4.提供了资源发现机制并带有资源描述。5.协议小巧最小的数据包只有4字节。6.可以使用DTLS作为安全加密层。7.资源消耗低所需RAM和ROM资源均小于10KB。8.其双层(事务层请求/响应层)处理方式可支持异步通信。9.支持观察模式。物联网场景中CoAP客户端有时并不需要不停的查询CoAP服务器端的数据变化情况(比如需要去监控某个温度或湿度传感器))。此时CoAP客户端可以发送一个观察请求到服务器端从该时间点开始计算服务器便会记住客户端的连接信息一旦温度发生变化服务器将会把新结果发送给客户端。如果客户端不在希望获得温度检测结果那么客户端将会发送一个RST复位请求此时服务器便会清除与客户端的连接信息。10.支持块传输。CoAP协议的特点是传输的内容小巧精简但是在某些情况下不得不传输较大的数据。在这种情况下可以使用CoAP协议中的选项设定分块传输的大小服务器和客户端即可完成分片和组装。测试首先在ubuntu下操作如下下载 git clone https://github.com/authmillenon/libcoap.gitsudo apt-get install autoconfautoconfmake -- make install安装完成之后便会新建/usr/local/include/libcoap目录并把coap.h config.h debug.h pdu.h等头文件复制到该目录中。 编译生成的libcoap.a该静态链接库被复制到了/usr/local/lib中。 编译完成之后在example目录中会增加两个重要文件——coap-client和coap-server。coap服务器测试运行 ./coap-server需要在火狐上安装插件coapd测试get post 等功能coap客户端测试(1)运行coap-server./coap-server(2)运行coap-client./coap-client -m get -o result.txt coap://127.0.0.1参数解析-m 表示coap访问方法默认为get方法此处设置为get方法。除了get方法之外还包括put、post和delete。-o 表示访问获得的内容保存到result.txt文件中如果访问成功那么控制台输出v:1 t:0 tkl:0 c:1 id:45104-v 表示coap的版本编号此时的coap的版本编号为1。-t 表示报文类型为CON-tkl 表示token区域的长度此时的token区域的长度为0。-c 表示访问方法该处还需要分析-id表示message id