小言_互联网的博客

基于netty开发的物联网后台框架一套(支持Jt808交通协议

862人阅读  评论(0)

本项目为作者本人因公司需要自行开发支持百万级并发

整个项目分为三部分:

(1) common 是公用的jar包, 作为一个工程,方便各个项目引用(在eclipse中,一个项目可以引用另一个项目中所使用的jar包)

(2) gpsservice主要是Hibernate实体类和在此之上封装的DAO层和服务层,提供数据的增删改查服务和其他逻辑计算服务. 是一个类库,不能独立运行,只能被调用。

(3)jt808server,是GPS通信服务,主要功能如下:

  • 接收、解析、入库符合808协议的终端的GPS数据
  • 接收平台的调用指令,然后对终端下发指令,如监听、拍照等等;
  • 报警分析,对GPS数据进行分析,形成报警记录,并实时推送给客户端;
  • 统计,对GPS数据进行里程统计、上线率统计、报警统计等.

  

框架封装了一系列操作

   例如:协议解码器解析Socket接收到的底层字节数据,解析出完整的808协议数据包,处理粘包、断包情况,避免错误包和丢包。

  支持拍照 gps定位 收发消息.....

public boolean StartServer() {
		// 启动服务器
		boolean res = getJt808Server().start();
		if (res) {
			// 启动命令解析器,从数据库中读取命令进行解析
			//getCommandService().setBaseDao(ServiceLauncher.getBaseDao());
			getCommandService().Start();
			
		    this.commandService.setOnRecvCommand(new ICommandHandler(){

				@Override
				public boolean OnRecvCommand(T808Message tm, TerminalCommand tc) {
					if(getJt808Server().isOnline(tc.getSimNo()) == false)
					{
						tc.setStatus(TerminalCommand.STATUS_OFFLINE);
						return false;
					}else
					{
						boolean res = Send(tm);
						tc.setSN(tm.getHeader().getMessageSerialNo());
						tc.setStatus(res ? TerminalCommand.STATUS_PROCESSING : 
							TerminalCommand.STATUS_FAILED);
						return res;
					}				
				}
		    });
		    
			//应答服务,调用Server,发送应答数据包
			ackService.setMessageSender(new IMessageSender(){

				@Override
				public void Send808Message(T808Message tm) {
					Send(tm);
					
				}
				
			});
			//if(transferGpsService.sta)
			transferGpsService.start();
			//processRealDataThread.start();
		}
		return res;
	}
	

 

需要源码的下方评论


转载:https://blog.csdn.net/weixin_39592397/article/details/95947489
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场