基于CoAP协议客户端/服务端的demo(Java版)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37355951/article/details/79307195

概述:

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方法

扫描二维码关注公众号,回复: 3521899 查看本文章

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!
===============================================================

总结:其实它跟UDP,TCP 类似的。

参考:《IoT开发实战 CoAP卷》

猜你喜欢

转载自blog.csdn.net/m0_37355951/article/details/79307195