当前位置: 首页 > news >正文

设计物联网的接口

一、背景

设计Java版本的物联网通信接口。

二、主要通信模式

1、生产消费模式

客户端不断的生产数据,服务端不断的消费数据。

中间有一个队列缓冲。

2、订阅推送模式

一个或者多个客户端订阅一个话题。

一个或者多个客户端给话题推送消息。

三、主要接口

(一)订阅或者消费

1、连接服务端:

public Client(String "服务端地址", int 端口)

2、登录

boolean login(String 用户名, String 密码)

3、订阅话题

没有订阅就是默认话题的生产消费模式。

void subscribe(String 话题)

4、异步接收消息

void setListener(EventListener listen)

EventListener类的主要方法:

// 接受字节序列

public void receive(byte[] data)

// 接收整数

public void receive(long data)

// 接收浮点数

public void receive(double data)

// 接收字符串

public void receive(String str)

(二)推送或者消费

1、连接服务端

public Client(String "服务端地址", int 端口)

2、登录

boolean login(String 用户名, String 密码)

3、指定推送话题

void setTopic(String 话题)

4、推送消息

// 发送字节序列

public void publish(byte[] data)

// 发送整数

public void publish(long data)

// 发送浮点数

public void publish(double data)

// 发送字符串

public void publish(String str)

(三)关闭

public void close()

四、总结

1、设计通信协议和接口比较简单。

关键是需要指定每个数据块的类型和长度。

2、监听数据,一般是一个线程在后台循环读取。

假设后台监听数据的线程逻辑是下列:

public void run(){

while(state.get()){

// 读取数据包的类型

int type = client.readType();

// 如果等于1,代表是数组类型

if(type == 1){

listen.recieve(client.readArray());

} else if(){

// 其他的字符串,整型,浮点型数据

}

}

}

http://www.jsqmd.com/news/973217/

相关文章:

  • 农产品全链条溯源系统:SpringBoot微服务+Fabric区块链实现从田间到餐桌的可信追踪
  • Jupyter Lab 3.x 用户注意:升级后IProgress报错的完整修复指南(含ipywidgets兼容性详解)
  • 【第四十三周】论文阅读《Planning with the Views via Scene Self-Exploration》
  • BiSeNet V2保姆级解析:用‘细节+语义’双分支搞定实时分割,附PyTorch复现要点
  • 单流检测:KCC 在独享链路时的行为切换
  • DeepSeek 大模型落地应用与场景实战指南,从客服到代码:10 个 AI 落地场景,重塑企业工作流
  • MATLAB R2021b + UE4.25 联合仿真避坑实录:手把手解决插件路径找不到的问题
  • 用 OpenCLAW 重写 CUDA 内核:从异构计算到高性能可移植
  • 保姆级教程:用串口助手搞定TMC2209电机驱动,从寄存器读写到CRC校验(附代码)
  • 数美验证码逆向实战:我是如何一步步破解其滑动验证逻辑的(含关键参数详解)
  • 轻松拿下OpenResty神器
  • ModbusRTU写入报文调试实战:用Modbus Poll/Simulator和C#控制台,一步步验证你的代码
  • 从HTTP业务到无线信道:用NS-3搭建可定制的网络性能测试沙盒
  • 别再只会调API了!深入理解weixin-js-sdk分享背后的签名与安全机制
  • ARM Cortex-M 嵌入式开发:从寄存器到 RTOS 的系统构建之路
  • Streamlit:用 Python 快速构建数据应用
  • 别再死记硬背UML图了!用PlantUML+VS Code,5分钟画出专业级类图和时序图
  • TDOA无源定位Chan算法MATLAB实现:含主程序、结果图与参数可调接口
  • 耳饰上的奢侈:为什么小小一对蛋面,价值却高得惊人?
  • 2026年唐山CPPM资料试听课怎么确认?众智商学院官网400冯老师报名费用 - 众智商学院官方
  • Langchain-快速入门篇
  • SAP MM配置避坑指南:BP转供应商时,为什么必须勾选‘相同号码’?一个真实案例引发的思考
  • 人力资源AI应用落地
  • CH32V307开发板串口服务器实战:基于RT-Thread和LWIP的UART转TCP通信
  • TOML、JSON、YAML、INI 配置文件格式总结
  • 解决高并发多模态任务下的“状态漂移”:基于分布式任务管理的状态收敛实录
  • 遗传算法Python实战:N皇后问题从原理到稳定收敛
  • 多维聚合中的数据操纵:从GROUP BY到OLAP立方体的四次空间变换
  • AI 回答又臭又长?原因竟然在于 Markdown
  • 代码比对神器Beyond Compare的隐藏技巧:用一行命令过滤掉所有垃圾文件