本文主要是介绍菜鸟江涛带你学最小物联网系统(外篇)——NB-IoT服务器搭建,基于CoAP协议的初次运行(多层级Path处理),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
菜鸟江涛带你学最小物联网系统(外篇)——NB-IoT服务器搭建,基于CoAP协议的初次运行
本篇是承接上篇的补充部分,主要是记录Californium框架在使用中的一些坑。
1.问题场景描述
上篇讲了使用Californium如何搭建一个coap服务端和客户端的例子。在使用过程中我又遇到了问题,如下
例如我想访问:coap://127.0.0.1/devices/lock
按照上篇的描述:我在服务端增加了如下的写法,然后启动coap服务器,使用客户端进行访问
// 资源1server.add(new CoapResource("devices/lock") {@Overridepublic void handleGET(CoapExchange exchange) {System.out.println("lock -- "+exchange.toString());exchange.respond("devices connect!!");}});
然后得到的结果是如下:
C:\Users\XYSM>java -jar C:\Users\XYSM\Desktop\client.jar coap://127.0.0.1/devices/lock
4.04
{}ADVANCED==[ CoAP Response ]============================================
MID : 35548
Token : [30515f270ceed804]
Type : ACK
Status : 4.04
Options: {}
RTT : 27 ms
Payload: 0 Bytes
===============================================================
应答码是4.04:表示服务器无法寻找到地址资源 ,说明咱们的路径有问题了!!!
然后我使用coap通用的访问路径 /.well-know/core 来查看支持的资源
C:\Users\XYSM>java -jar C:\Users\XYSM\Desktop\client.jar coap://127.0.0.1/.well-known/core
2.05
{"Content-Format":"application/link-format"}
</devices/lock>,</.well-known/core>ADVANCED==[ CoAP Response ]============================================
MID : 7154
Token : [10fa79aed6df420b]
Type : ACK
Status : 2.05
Options: {"Content-Format":"application/link-format"}
RTT : 13 ms
Payload: 35 Bytes
---------------------------------------------------------------
</devices/lock>,</.well-known/core>
===============================================================
赫然发现 /devices/lock 这个路径是存在的 ,但是为何一直报4.04错误呢????
问题原因:原来是Californium框架中的Uri-Path不支持“/” ,所以就得另辟蹊径了!!
2.解决方案
知道了问题的原因,我们就来看下框架上是如何实现的,其实从框架的源码中我们可以窥见一点端倪,如下:
然后在Github仓库中我也找到了对应的解决方法,可以给大家做借鉴
其实就是一次add一层路径(CoapResources),多层路径要多次进行add !!当然我们也可以在对应的在每一层路径下,可以重写对应的处理方法。
改造下多层路径的写法,如下:
// 资源1server.add(new CoapResource("devices").add(new CoapResource("lock") {@Overridepublic void handleGET(CoapExchange exchange) {exchange.respond("devices lock online !");}}));
3.演示效果
好了,coap的多层路径访问就是这样了
这篇关于菜鸟江涛带你学最小物联网系统(外篇)——NB-IoT服务器搭建,基于CoAP协议的初次运行(多层级Path处理)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!