当前位置: 首页 > news >正文

Java 对接 CoAP 完整方案

CoAP 是物联网轻量协议(UDP、二进制、低功耗),Java 主流两个库:

  1. Californium (Cf):工业标准、功能最全,支持 CoAP RFC7252、DTLS、资源观察、块传输(首选)
  2. coap-java:轻量简单,仅基础 CoAP,无 DTLS,适合简单测试

一、Californium(推荐,生产用)

1. Maven 依赖

<!-- core 核心 --><dependency><groupId>org.eclipse.californium</groupId><artifactId>californium-core</artifactId><version>3.9.0</version></dependency><!-- coap协议标准封装 --><dependency><groupId>org.eclipse.californium</groupId><artifactId>element-connector</artifactId><version>3.9.0</version></dependency><!-- DTLS 加密(设备安全通信必加) --><dependency><groupId>org.eclipse.californium</groupId><artifactId>scandium-core</artifactId><version>3.9.0</version></dependency>

2. CoAP 客户端(请求设备/CoAP服务)

importorg.eclipse.californium.core.CoapClient;importorg.eclipse.californium.core.CoapResponse;importorg.eclipse.californium.core.coap.MediaTypeRegistry;publicclassCoapSimpleClient{publicstaticvoidmain(String[]args){// coap://IP:端口/资源路径Stringuri="coap://127.0.0.1:5683/sensor/temp";CoapClientclient=newCoapClient(uri);try{// 1. GET 请求(读取设备数据)CoapResponsegetResp=client.get();if(getResp.isSuccess()){System.out.println("GET 响应:"+getResp.getResponseText());System.out.println("状态码:"+getResp.getCode());}// 2. PUT 请求(下发配置,携带JSON)Stringpayload="{\"temp\":25}";CoapResponseputResp=client.put(payload,MediaTypeRegistry.APPLICATION_JSON);// 3. POST 请求(上报数据/执行指令)CoapResponsepostResp=client.post("open",MediaTypeRegistry.TEXT_PLAIN);// 4. DELETEclient.delete();}catch(Exceptione){e.printStackTrace();}finally{client.close();}}}

3. CoAP 服务端(Java 搭建CoAP服务,供设备上报)

importorg.eclipse.californium.core.CoapResource;importorg.eclipse.californium.core.CoapServer;importorg.eclipse.californium.core.server.resources.CoapExchange;publicclassCoapSimpleServer{publicstaticvoidmain(String[]args){CoapServerserver=newCoapServer(5683);// 默认5683端口// 定义资源 /sensor/tempCoapResourcetempResource=newCoapResource("temp"){@OverridepublicvoidhandleGET(CoapExchangeexchange){// 设备读取温度exchange.respond("26.5 ℃");}@OverridepublicvoidhandlePOST(CoapExchangeexchange){// 设备POST上报数据Stringdata=exchange.getRequestText();System.out.println("设备上报:"+data);exchange.respond(201,"ok");}@OverridepublicvoidhandlePUT(CoapExchangeexchange){Stringcfg=exchange.getRequestText();System.out.println("下发配置:"+cfg);exchange.respond("update success");}};CoapResourcesensorRoot=newCoapResource("sensor");sensorRoot.add(tempResource);server.add(sensorRoot);server.start();System.out.println("CoAP Server 启动,端口5683");}}

4. 关键高级功能(物联网常用)

(1)观察模式 Observe(设备主动推送,类似订阅)
// 客户端订阅资源变化client.observe(resp->{System.out.println("推送数据:"+resp.getResponseText());});
(2)DTLS 加密 coaps:// 安全传输
// coaps 加密地址,需加载证书CoapClientsecureClient=newCoapClient("coaps://127.0.0.1:5684/device");
(3)块传输(大数据分包,CoAP块1/块2)

Californium 默认自动分片,无需手动处理。

二、轻量 coap-java(简单测试场景)

Maven

<dependency><groupId>com.github.svetleishaya</groupId><artifactId>coap-java</artifactId><version>1.4.0</version></dependency>

示例极简,但不支持DTLS、Observe、工业扩展,仅学习用,不推荐生产。

三、CoAP 与 MQTT 区别(物联网选型)

特性CoAPMQTT
传输层UDPTCP
头部大小极小(4B起)较大
安全DTLSTLS
适用低功耗单片机、电池设备网关、云端、大量长连接设备
交互模型请求响应(REST风格)发布订阅

四、常见踩坑点

  1. 端口:CoAP 默认5683;加密 coaps5684,防火墙开放UDP
  2. UDP 丢包:CoAP 自带重传,但弱网建议增加超时client.setTimeout(3000);
  3. 数据包过大:开启块传输,Californium 自动处理
  4. 设备DTLS证书:使用scandium生成密钥对,一机一密

五、SpringBoot 集成 CoAP 扩展

如果是 SpringBoot 项目,可封装工具类:

  1. 全局单例 CoapClient 池(避免频繁创建销毁)
  2. 统一异常拦截、消息日志
  3. DTLS 证书配置读取yml
http://www.jsqmd.com/news/1115513/

相关文章:

  • 告别公式复制烦恼:LaTeX2Word-Equation一键转换解决方案
  • 手机租赁商家如何选择监管锁?从技术、安全和运维能力看,什么样的监管锁才靠谱?
  • 深度学习训练核心:计算图与反向传播机制详解
  • 如何一次性解决所有Windows DLL缺失问题:VisualCppRedist AIO完整指南
  • Databricks上构建高可靠邮件分类LLM流水线
  • 标准化软件和定制开发的区别是什么?(实战干货笔记)
  • 运动耳机什么牌子好?盘点十款健身、跑步、游泳多场景适用机型
  • 2026年口碑最佳梳子厂家,选这5家不踩雷
  • 工业机器视觉工程师未来的出路在哪里
  • STC3115电池监控芯片与STM32F405RG的集成应用
  • open Harmony设备统一互联文件互传技术规范(一)
  • 綦江装修,别再被“低价”忽悠了!选对靠谱公司才是家的保障
  • AudioX-Turbo:四步极速生成音频神器:文字/视频一键转音效音乐 一键整合包下载
  • Cyrus框架:Android APK自动化安全测试与载荷注入实战指南
  • 原神帧率解锁:彻底告别60帧限制的终极指南
  • RFID智能密集架:智慧档案库房的关键技术
  • 基于TPAFE0808和STM32的多通道低功耗信号采集系统设计
  • ASM330LHH与MK24FN1M0VDC12在运动跟踪系统中的应用
  • KKManager:终极游戏模组管理器,一键解决14款游戏插件冲突问题
  • 计算机毕业设计之机械铸造企业ERP网站
  • 必看!A、B、C三品牌无线课堂答题器测评,各有亮点与短板
  • 南宁市英华学校周边公共交通指南
  • 电商场景图生成为何容易失真:商品主体一致性问题解析
  • 5分钟打造你的私人微信智能助手:WechatBot微信机器人快速上手指南
  • K-498X 超高性能瞬干胶-航空航天与军工电子粘接-技术参数与选型
  • 告别网盘下载限制:浏览器脚本解锁九大云盘直链下载新体验
  • nginx配置代理前端项目
  • Open Claw:本地大模型CLI调度器,实现GGUF模型秒级热切换
  • 重新定义Mac菜单栏:Ice如何让您的桌面空间更智能高效
  • 计算机毕业设计之jsp教案管理系统的设计与实现