一 java 编写 coap 客户端与服务端
概述:
CoAP是为物联网而生,短小精悍,它底层基于UDP协议的,其它具体参考百度百科,本例子是基于Californium框架。
1、先决条件
java环境
eclipse工具
Maven插件(有最好,不需要手动下载jar引入,没有的话手动引入)
2、下载Californium框架核心jar
californium-core.jar : 包括CoAP核心部分
element-connector.jar 包括适用于UDP和DTLS的java套接字抽象层
scandium.jar: 包括DTLS
<dependency>
<groupId>org.eclipse.californium</groupId>
<artifactId>californium-core</artifactId>
<version>2.0.0-M7</version>
</dependency>
<dependency>
<groupId>org.eclipse.californium</groupId>
<artifactId>element-connector</artifactId>
<version>2.0.0-M7</version>
</dependency>
<dependency>
<groupId>org.eclipse.californium</groupId>
<artifactId>scandium</artifactId>
<version>2.0.0-M7</version>
</dependency>
已经下载打包成集合:下载地址 (不能设置积分为0,尴尬了)
3、创建java工程或Maven工程,创建一个Server类
import org.eclipse.californium.core.CoapResource;
import org.eclipse.californium.core.CoapServer;
import org.eclipse.californium.core.coap.CoAP.ResponseCode;
import org.eclipse.californium.core.server.resources.CoapExchange;
public class HelloCoAPServer {
public static void main(String[] args) {
CoapServer server = new CoapServer();//主机为localhost 端口为默认端口5683
server.add(new CoapResource("hello"){//创建一个资源为hello 请求格式为 主机:端口\hello
@Override
public void handleGET(CoapExchange exchange) { //重写处理GET请求的方法
exchange.respond(ResponseCode.CONTENT, "Hello CoAP!");
}
});
server.add(new CoapResource("time"){ //创建一个资源为time 请求格式为 主机:端口\time
@Override
public void handleGET(CoapExchange exchange) {
Date date = new Date();
exchange.respond(ResponseCode.CONTENT,
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date));
}
});
server.start();
}
}
4、创建一个客户端:
public class GETClient {
public static void main(String[] args) throws URISyntaxException {
URI uri = null;
uri = new URI("localhost:5683/hello"); //创建一个资源请求hello资源,注意默认端口为5683
CoapClient client = new CoapClient(uri);
CoapResponse response = client.get();
if(response !=null){
System.out.println(response.getCode()); //打印请求状态码
System.out.println(response.getOptions()); //选项参数
System.out.println(response.getResponseText()); //获取内容文本信息
System.out.println("\nAdvanced\n"); //
System.out.println(Utils.prettyPrint(response)); //打印格式良好的输出
}
}
}
5、测试
先运行HelloCoAPServer的main方法
然后运行GETClient的main方法
6、日志:
2.05
{"Content-Format":"text/plain"}
Hello CoAP!
Advanced
==[ CoAP Response ]============================================
MID : 10763
Token : [aab3ac5818d1e598]
Type : ACK
Status : 2.05
Options: {"Content-Format":"text/plain"}
RTT : 26 ms
Payload: 11 Bytes
---------------------------------------------------------------
Hello CoAP!
===============================================================
二 node-red安装node-red-contrib-coap
安装之后拖拽配置
coap请求节点配置如下
coap 服务端节点配置如下
服务端响应节点配置如下
可以自定义响应的格式