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

CoAP是为物联网而生,短小精悍,它底层基于UDP协议的,其它具体参考百度百科,本例子是基于Californium框架。

1、先决条件

java环境

eclipse工具

Maven插件(有最好,不需要手动下载jar引入,没有的话手动引入)

2、下载Californium框架核心jar

californium-core.jar : 包括CoAP核心部分

element-connector.jar  包括适用于UDP和DTLS的java套接字抽象层

scandium.jar: 包括DTLS

 
  1. <dependency>

  2. <groupId>org.eclipse.californium</groupId>

  3. <artifactId>californium-core</artifactId>

  4. <version>2.0.0-M7</version>

  5. </dependency>

  6. <dependency>

  7. <groupId>org.eclipse.californium</groupId>

  8. <artifactId>element-connector</artifactId>

  9. <version>2.0.0-M7</version>

  10. </dependency>

  11. <dependency>

  12. <groupId>org.eclipse.californium</groupId>

  13. <artifactId>scandium</artifactId>

  14. <version>2.0.0-M7</version>

  15. </dependency>

 

已经下载打包成集合:下载地址   (不能设置积分为0,尴尬了)

3、创建java工程或Maven工程,创建一个Server类

 
  1. import org.eclipse.californium.core.CoapResource;

  2. import org.eclipse.californium.core.CoapServer;

  3. import org.eclipse.californium.core.coap.CoAP.ResponseCode;

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

  5.  
  6. public class HelloCoAPServer {

  7.  
  8. public static void main(String[] args) {

  9. CoapServer server = new CoapServer();//主机为localhost 端口为默认端口5683

  10. server.add(new CoapResource("hello"){//创建一个资源为hello 请求格式为 主机:端口\hello

  11.  
  12. @Override

  13. public void handleGET(CoapExchange exchange) { //重写处理GET请求的方法

  14. exchange.respond(ResponseCode.CONTENT, "Hello CoAP!");

  15. }

  16.  
  17. });

  18. server.add(new CoapResource("time"){ //创建一个资源为time 请求格式为 主机:端口\time

  19.  
  20. @Override

  21. public void handleGET(CoapExchange exchange) {

  22. Date date = new Date();

  23. exchange.respond(ResponseCode.CONTENT,

  24. new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date));

  25. }

  26.  
  27. });

  28. server.start();

  29. }

  30. }

4、创建一个客户端:

 
  1. public class GETClient {

  2.  
  3. public static void main(String[] args) throws URISyntaxException {

  4. URI uri = null;

  5. uri = new URI("localhost:5683/hello"); //创建一个资源请求hello资源,注意默认端口为5683

  6. CoapClient client = new CoapClient(uri);

  7. CoapResponse response = client.get();

  8. if(response !=null){

  9. System.out.println(response.getCode()); //打印请求状态码

  10. System.out.println(response.getOptions()); //选项参数

  11. System.out.println(response.getResponseText()); //获取内容文本信息

  12. System.out.println("\nAdvanced\n"); //

  13. System.out.println(Utils.prettyPrint(response)); //打印格式良好的输出

  14. }

  15. }

  16. }

5、测试

先运行HelloCoAPServer的main方法

然后运行GETClient的main方法

6、日志:

 
  1. 2.05

  2. {"Content-Format":"text/plain"}

  3. Hello CoAP!

  4.  
  5. Advanced

  6.  
  7. ==[ CoAP Response ]============================================

  8. MID : 10763

  9. Token : [aab3ac5818d1e598]

  10. Type : ACK

  11. Status : 2.05

  12. Options: {"Content-Format":"text/plain"}

  13. RTT : 26 ms

  14. Payload: 11 Bytes

  15. ---------------------------------------------------------------

  16. Hello CoAP!

  17. ===============================================================

 

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值