基於CoAP協議客戶端/服務端的demo(Java版)
阿新 • • 發佈:2019-02-03
概述:
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!
===============================================================
總結:其實它跟UDP,TCP 類似的。
參考:《IoT開發實戰 CoAP卷》