代码拉取完成,页面将自动刷新
同步操作将从 iteaj/iotucy 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
使用java语言且基于netty, spring boot, redis等开源项目开发来的物联网网络中间件, 支持udp, tcp通讯等底层协议和http, mqtt, modbus(tcp,rtu),plc,dtu(支持心跳,设备注册功能以及AT协议和自定义协议支持),dtu for modbus tcp,dtu for modbus rtu组件适配 等上层协议. 主打工业物联网底层网络交互、设备管理、数据存储、大数据处理. (其中plc包括西门子S7系列,欧姆龙Fins,罗克韦尔CIP,三菱MC). 数据存储将使用taos数据库以及redis消息队列
java -jar -Diot.num=5000 iot-test-2.3.0.jar
。 其中iot.num参数用来指定要创建的连接数。此测试应用是用iot-test打包的源码请看iot-test模块首先创建一个springboot应用
// 注springboot 2.6以上的需要添加一下配置
spring.main.allow-circular-references=true
//在maven文件里面引入服务端jar包
<dependency>
<version>version</version>
<groupId>com.iteaj</groupId>
<artifactId>iot-server</artifactId>
</dependency>
package com.iteaj.iot.test.server.fixed;
import com.iteaj.iot.AbstractProtocol;
import com.iteaj.iot.config.ConnectProperties;
import com.iteaj.iot.server.component.FixedLengthFrameDecoderComponent;
import com.iteaj.iot.server.protocol.HeartbeatProtocol;
import com.iteaj.iot.test.TestProtocolType;
/**
* 固定长度解码器组件测试
* _注意:此组件必须交由spring容器管理_
* _注意:此处必须指定此组件使用的报文类型<FixedLengthServerMessage>_
*/
@Component
public class TestFixedLengthDecoderComponent extends FixedLengthFrameDecoderComponent<FixedLengthServerMessage> {
// 构造函数指定要监听的端口 8080
// 指定固定长度28
public TestFixedLengthDecoderComponent() {
super(new ConnectProperties(8080), 28);
}
@Override
public String getDesc() {
return "用于测试服务端固定长度字段解码器[FixedLengthFrameDecoder]";
}
/**
* 通过报文头获取对应的协议
*/
@Override
public AbstractProtocol getProtocol(FixedLengthServerMessage message) {
TestProtocolType protocolType = message.getHead().getType();
// 心跳类型返回心跳协议
if(protocolType == TestProtocolType.Heart) {
return HeartProtocol.getInstance(message);
// 对于客户端主动请求服务器的协议类型 - new一个协议对象
} else if(protocolType == TestProtocolType.CIReq) {
return new FixedLengthClientRequestProtocol(message);
} else {
// 对于客户端响应服务器的协议类型 - 必须移除保存在服务端的协议
return remove(message.getHead().getMessageId());
}
}
@Override
public String getName() {
return "固定长度字段解码组件";
}
}
package com.iteaj.iot.test.server.fixed;
import com.iteaj.iot.server.ServerMessage;
import com.iteaj.iot.test.MessageCreator;
/**
* 固定长度报文 28
* 8 8 4 8
* 设备编号 + messageId + type + 递增值
* _注:服务端报文必须继承父类:ServerMessage _
*/
public class FixedLengthServerMessage extends ServerMessage {
// 注意:此构造函数一定要存在
public FixedLengthServerMessage(byte[] message) {
super(message);
}
public FixedLengthServerMessage(MessageHead head) {
super(head);
}
public FixedLengthServerMessage(MessageHead head, MessageBody body) {
super(head, body);
}
// 解析出客户端请求报文的报文头
@Override
protected MessageHead doBuild(byte[] message) {
return MessageCreator.buildFixedMessageHead(message);
}
}
// 交互协议包含两种
// 1. 客户端主动请求服务端(继承 ClientInitiativeProtocol) 比如:[设备获取服务器的当前时间(请求) -> 服务器响应当前时间给客户端(响应)]
package com.iteaj.iot.test.server.fixed;
import com.iteaj.iot.Message;
import com.iteaj.iot.ProtocolType;
import com.iteaj.iot.server.manager.DevicePipelineManager;
import com.iteaj.iot.server.protocol.ClientInitiativeProtocol;
import com.iteaj.iot.test.MessageCreator;
import com.iteaj.iot.test.TestProtocolType;
public class FixedLengthClientRequestProtocol extends ClientInitiativeProtocol<FixedLengthServerMessage> {
public FixedLengthClientRequestProtocol(FixedLengthServerMessage requestMessage) {
super(requestMessage);
}
// 构建要响应给客户端的报文
@Override
protected FixedLengthServerMessage doBuildResponseMessage() {
Message.MessageHead head = requestMessage().getHead();
String equipCode = head.getEquipCode();
String messageId = head.getMessageId();
DevicePipelineManager instance = DevicePipelineManager.getInstance();
return MessageCreator.buildFixedLengthServerMessage(equipCode, messageId, instance.size(), head.getType());
}
// 解析出客户端请求的报文内容
@Override
protected void doBuildRequestMessage(FixedLengthServerMessage requestMessage) {
}
@Override
public ProtocolType protocolType() {
return TestProtocolType.CIReq;
}
}
// 2. 服务端主动请求客户端(继承 ServerInitiativeProtocol)比如:[服务端下发开指令到客户端(请求) -> 客户端响应服务端操作是否成功的状态(响应)]
说明:以下是已经适配好的常用的解码器组件
//在maven文件里面引入iot-client jar包
<dependency>
<version>version</version>
<groupId>com.iteaj</groupId>
<artifactId>iot-client</artifactId>
</dependency>
//在maven文件里面引入iot-mqtt jar包
<dependency>
<version>version</version>
<groupId>com.iteaj</groupId>
<artifactId>iot-mqtt</artifactId>
</dependency>
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。