网络通信框架使用(topiot)

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

topiot.zip:点我下载

使用说明

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

2、相关配置

     pom.xml

        <dependency>
			<groupId>com.top</groupId>
			<artifactId>topiot</artifactId>
			<version>1.0.0</version>
		</dependency>
	 
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.1.34</version>
		</dependency>		
		 
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
		</dependency>

		<dependency>
			<groupId>org.apache.mina</groupId>
			<artifactId>mina-core</artifactId>
			<version>2.0.7</version>
		</dependency>

  springmvc.xml

<bean id="demo" class="com.transportlayer.Tcp">
		<property name="serviceId" value="demo"></property>
		<property name="Handler" value="com.test"></property>
		<property name="port">
			<list>
				<value>10375</value>
			</list>
		</property>
		<property name="decodecharset" value="ISO-8859-1"></property>
		<property name="encodecharset" value="ISO-8859-1"></property>
		<property name="pushUrl" value="http://127.0.0.1/push/"></property>
		<property name="pushflag">
			<value>false</value>
		</property>
		<property name="debugflag">
			<value>true</value>
		</property>
		<property name="toServiceId" value="demo"></property>
</bean>

代码说明:

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,然后发送数据。

猜你喜欢

转载自blog.csdn.net/u011800133/article/details/81395026