美文网首页
Eclipse的californium之GET 章节三

Eclipse的californium之GET 章节三

作者: Lukes_zhai | 来源:发表于2019-06-16 12:28 被阅读0次

经过上一章的简单Helloword,相信很多读者都看出来了,上面的案例就是一个简单的Get请求,请求方式甚至是和Http协议的get请求方式如出一辙。而这里又多做了get请求的介绍似乎有点画蛇添足的感觉。非也!这一章的重点不会过多的介绍get的请求实现,而是整体介绍一下coap请求的几种请求方式的实现。

californium coap依赖包介绍:

核心jar包截图

如上图,依赖的jar包主要是 

1:californium-core           coap依赖工具的核心jar包

2-element-connector         UDP链接实现jar包

3-scandium                          dtls coap协议的安全机制实现就像https,coap也有coaps实现

californium-core就像spring framework框架一样也是会有spring-core在核心jar包封装了我们常用的框架的设计模式,以及诸如等实现方式。同理element-connector ,就像jdbc的链接一样只不过他的实现并不是对数据库的链接,而是http协议的实现。而element-connector是对UDP协议的实现。

由于Http协议的开销很大,因为http协议添加了对数据的健壮性,以及报文的顺序性,所以在物联网应用场景单个设备板子 buffer并不是很大,而且网络带宽也还是在3G,4G的状态,不可能对网络环境进行更高速率的网络传输。而UDP相对于TCP在物联网环境下优势就很明显。

Coap协议UDP链接实现类

如图所示,coap协议是基于UDP的网络协议。该类的介绍会在后面异议的简介。

至此我们先来实现GET请求。

1-Client代码实现:

package com.zhai.coap.demon02_GET;

import org.eclipse.californium.core.CoapClient;

import org.eclipse.californium.core.coap.Request;

public class DemonClient02 {

public static void main(String[] args) {

createCoapGet();

}

public static void createCoapGet() {

final CoapClient client = new CoapClient("coap://localhost:5683/get_client");

Request request = Request.newGet();

request.setPayload("Hello I am Client. i = "+1);

/**

* @see 设置udp为相应方式

*/

client.useCONs();

client.useExecutor();

client.advanced(new DemonHandler02(), request);

}

}

2-ClientHandler代码实现

package com.zhai.coap.demon02_GET;

import org.eclipse.californium.core.CoapHandler;

import org.eclipse.californium.core.CoapResponse;

public class DemonHandler02  implements CoapHandler {

public void onLoad(CoapResponse response) {

String conte = response.getResponseText();

System.out.println(conte);

}

public void onError() {

System.err.println("Client Error");

}

}

3-server端代码实现:

package com.zhai.coap.demon02_GET;

import org.eclipse.californium.core.CoapServer;

import org.eclipse.californium.core.network.CoapEndpoint;

public class DemonServer02 {

public static void main(String[] args) {

CoapServer server = new CoapServer();

CoapEndpoint endpoint = new CoapEndpoint(5683);

server.addEndpoint(endpoint);

server.add(new DemonResource02("get_client"));

server.start();

}

}

4-serverResource代码实现

package com.zhai.coap.demon02_GET;

import org.eclipse.californium.core.CoapResource;

import org.eclipse.californium.core.server.resources.CoapExchange;

public class DemonResource02 extends CoapResource{

public DemonResource02(String name) {

super(name);

}

@Override

public void handleGET(CoapExchange exchange) {

String clientContent = exchange.getRequestText();

System.out.println(clientContent);

exchange.respond("Hello I am Server, " + clientContent);

}

}

代码实现介绍:

Request request = Request.newGet();

创建一个Request GET请求方式,查看源码:

Reuqest源码截图

如上所示Request的构造方法设置了请求的响应方式

请求方式的响应以Code为准

Code源码查看:

code源码截图

这是一个定义在内部的实现类实现了请求的响应方式。GET,POST,PUT,DELETE

request.setPayload("Hello I am Client. i = "+1);

在请求的pyload中设置响应发送到Server端的数据。

client.useCONs();                         设置请求为需要server端相应确认方式

client.useExecutor();                   设置请求响应后台创建线程等待确认

client.advanced(new DemonHandler02(), request);     设置请求自定义处理程序,在handler有两个实现方法。

public void onLoad(CoapResponse response) {}

public void onError() {}

两个方法顾名思义。onload是对收到的响应数据进一步做处理,可以保存到数据库,也可以发送到指定的位置。

而onError方法。主要是针对异常的一些处理。

下一章会单独讲解一下关于 client.useExecutor();   该方法的介绍,主要是针对coap client的多线程处理机制的实现,以及后台服务的优化。

至此小编已经连续的写了三篇关于coap的文章了,如果大家觉得有意义,帮我点个赞,再走吧,鼓励一下小编继续将文档补充下去。如果大家有什么问题欢迎到评论区留言。谢谢大家。

相关文章

  • Eclipse的californium之GET 章节三

    经过上一章的简单Helloword,相信很多读者都看出来了,上面的案例就是一个简单的Get请求,请求方式甚至是和H...

  • Eclipse的californium之HelloWord章节二

    读完上一章节的小伙伴们,通过三遍外部链接都已经大概的熟悉了coap协议的作用,意义,以及实现的方式,这里笔者...

  • 基于Eclipse的californium开发coap协议 章

    1: Eclipse基金会介绍 熟悉java开发的听到Eclipse再熟悉不过,常用的入门级别的IDE基本...

  • ubuntu eclipse安装

    eclipse安装 安装JAVA JDK,可以利用命令apt-get直接安装 去eclipse官网下载对应的软件安...

  • 安装jdk

    新技能get√eclipse mars for Java ee c+ regex 红黑树

  • 2020-03-19--封装

    eclipse设置get,set方法快捷方式:右键--source--Generate getters....设置...

  • Eclipse: Failed to get the requi

    Android Studio 更新到 2.3 之后,发现 Eclipse 不正常了,警告信息如下。(因为各种原因,...

  • lombok工具

    1.功能: 可以使实体类不用写get()、set()、tostring() 方法,通过eclipse或idea通过...

  • Tuleap

    简介https://www.tuleap.org/get-started 类似禅道Eclipse 基金会使用 Tu...

  • 安卓入门学习(六)Android与MVC设计模式

    前言 在用户界面设计章节中,对整个安卓项目的布局及资源有一定的了解,并在Eclipse(章节:Hello,worl...

网友评论

      本文标题:Eclipse的californium之GET 章节三

      本文链接:https://www.haomeiwen.com/subject/tgdaxctx.html