菜鸟江涛带你学最小物联网系统(外篇)——NB-IoT服务器搭建,基于CoAP协议的初次运行(多层级Path处理)

本文主要是介绍菜鸟江涛带你学最小物联网系统(外篇)——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处理)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/999257

相关文章

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

mysql中的服务器架构详解

《mysql中的服务器架构详解》:本文主要介绍mysql中的服务器架构,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、mysql服务器架构解释3、总结1、背景简单理解一下mysqphpl的服务器架构。2、mysjsql服务器架构解释mysql的架

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb