网络通信框架使用(topiot)

      topiot是基于tcp/ip协议栈的网络通信应用框架,可帮助我们快速开发高性能、高扩展的网络通信服务器。

开源地址:https://github.com/xizhonghuai/topiot

topiot.zip:点我下载

使用说明

1、下载topiot.zip完成后,直接运行“install.bat”安装到maven本地仓库。       

2、相关配置

     pom.xml

        
			com.top
			topiot
			1.0.0
		
	 
		
			com.alibaba
			fastjson
			1.1.34
				
		 
		
			log4j
			log4j
			1.2.17
		

		
			org.apache.mina
			mina-core
			2.0.7
		

  springmvc.xml


		
		
		
			
				10375
			
		
		
		
		
		
			false
		
		
			true
		
		

代码说明:

1)、id:服务唯一标识,由字母或数字组成。

2)、class:传输层协议,取值如下:

tcp:com.transportlayer.Tcp

udp:com.transportlayer.Udp

usart:com.transportlayer.Usart

3)、serviceId:服务唯一标志,同id。

4)、Handler:应用层协议(业务逻辑部分,取值为包+类名):

例:com.protocol.test.TestHandler (TestHandler类为业务逻辑部分)

5)、port:tcp、udp端口,支持多个配置。

6)、comName:串口端口号。

7)、baud:串口波特率。

8)、decodecharset、encodecharset:接收、发送数据编码方式。

9)、idle:数据读写通道空闲时间,单位秒。仅对tcp有效。

10)、pushUrl:数据推送地址。

11)、pushflag:http推送开关,开启后,设备端数据将转发到pushUrl上。

推送协议:服务唯一标识ID(固定长度16个字节,不足空格补)+设备id(固定长度

16个字节,不足空格补)+数据

12)、debugflag:调试开关,设置为true可通过以下协议与设备进行数据交互,支持

websoket、tcp。

websoket地址:ws://127.0.0.1:8081/topiot/ws

tcp地址:127.0.0.1:10401

客户端→设备:服务唯一标识ID(固定长度16个字节,不足空格补)+设备

id(固定长度16个字节,不足空格补)+数据

设备→客户端:服务唯一标识ID(固定长度16个字节,不足空格补)+设备

id(固定长度16个字节,不足空格补)+数据

13)、toServiceId:默认值为自身服务id,表示该服务下设备与设备之间可实现单工

通信。若配置为其他服务id,则能实现不同服务下的设备与设备之间通信。

通信协议:M2M+(13 个空格)+设备id(固定长度16 个字节,不足空格补)+

数据。

3、自定义业务逻辑类(com.test.class)

package com;

import org.apache.log4j.Logger;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;

import com.common.ClassMsgAnnotation;
import com.common.methods;


@ClassMsgAnnotation(mark = "测试")
public class test  extends IoHandlerAdapter {

private Logger logger = Logger.getLogger(test.class);


public void messageReceived(IoSession session, Object message) throws Exception {
// Empty handler

logger.info("收到数据(hex):" + methods.toHexString(message.toString()));
logger.info("收到数据(asc):" + message.toString());

 
session.write("ok");
 

}

public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
// Empty handler
}

public void sessionOpened(IoSession session) throws Exception {
// Empty handler
logger.info(session.getRemoteAddress() + "连接");
}

public void sessionClosed(IoSession session) throws Exception {
// Empty handler
}

}

 5、测试

启动项目后,使用tcp测试工具连接端口10375,然后发送数据。

网络通信框架使用(topiot)_第1张图片

网络通信框架使用(topiot)_第2张图片

 

你可能感兴趣的:(JAVA)