物联网协议Coap中Californium CoapClient解析
目录
前言
在之前的博客中
,文中简单介绍了CoapServer的实现。在物联网开发环境中,除了Server端需要定义,很多的开发场景是在客户端的开发,这涉及设备端的交互,比如传感器的数据采集,需要通过Client的put方法进行采集数据的提交,同时通过get方法获取服务器端的指令,然后在Client端进行采集。本次我们简单来看看CoapClient的具体实现,博文将继续采用面向对象分析的方法,结合类图、实际代码、时序图来讲讲解CoapClient类,方便了解和掌握其相关的配置,同时掌握其运行原理。在实际的终端开发中有的放矢。行文仓促,定有不当之处,欢迎各位读者批评指正,再此感谢。
一、CoapClient对象
在Coap的世界中,并不是像http协议一样,只要是浏览器就能发http请求,Coap需要实现对应的CoapClient,以此来跟Server建立通讯,实现数数据的提交,服务的交互。
1、类定义
在CoapClient的构造方法中,有三种构造的方式:
2、Client方法调用
在CoapClient中,定义了包括get、put、delete、post等方法的定义,在这里只是进行入口函数的编写。下节将重点讲解,在CoapClient中如何进行相应请求的发送。
二、发送请求
在构建好CoapClient对象后,就可以往目标服务器提交请求并获取响应结果了。这里详细讲解在Coap中如何进行请求的发送。下面是之前创建CoapClient以及发送get请求的关键代码:
1、构建请求
通过代码跟踪和时序图,以发送get请求为例,来看看底层究竟是怎么运行的。
第一步,在调用get()方法时,进入以下函数:
第二步,进入核心的请求函数
默认情况下,我们没有给请求设置超时时间,因此它会根据配置文件加载默认的超时时间。然后根据请求方式和携带的参数,都封装到request对象中。
这里可以看到get请求携带的参数如下:
2、发起请求
在这里,通过endPoint对象来进行发送。org.eclipse.californium.core.network.CoapEndpoint中的sendRequest方法。最终的请求参数如下:
可以看到,在发送请求的时候,是开启了一个线程池来进行请求发送。
在org.eclipse.californium.core.network.stack.BaseCoapStack
3、接收响应
可以看到,通过response对象就可以正常获取从服务端返回的响应信息。
总结
以上就是本文的主要内容,本文将继续采用面向对象分析的方法,结合类图、实际代码、时序图来讲讲解CoapClient类,方便了解和掌握其相关的配置,同时掌握其运行原理。在实际的终端开发中有的放矢。
- 点赞
- 收藏
- 关注作者
评论(0)