Java实现符合交通部标JT808和JT1078协议服务器的思路

这篇具有很好参考价值的文章主要介绍了Java实现符合交通部标JT808和JT1078协议服务器的思路。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        “两客一危一重货”车辆运输安全是当前道路运输安全管理工作的重中之重,相应的车辆GPS定位监控平台是监控“两客一危一重货”车辆运输安全的重要平台。本系统结合交通部JT808、JT1078等协议标准,提供Java开发车载视频定位监控系统的开发思路。

        一:JT808协议解析和服务器搭建。

     JT808协议分为2011版、2013版、2019版本。市面上大多是2013版,少数2019版。2013和2019版本的最大区别是报文固定头部把手机号从原来的6字节BCD码改成了10字节BCD码。

        2013版报文头:

Java实现符合交通部标JT808和JT1078协议服务器的思路

         2019版报文头:

Java实现符合交通部标JT808和JT1078协议服务器的思路

         对于TCP报文的解析,消息头可以使用公共组件,通过版本标记解析不同版本的消息头。消息体用每个消息自定义的解析格式。

public abstract class JTMessage {

    protected String msgId;//消息编号
    protected String tid;//终端ID
    protected String msgNo;//消息流水

    protected int version;//版本号
    protected int isPack;//分包

        解析报文头:

         //解析报文头
        ReadByteFromHex reader = new ReadByteFromHex(msg);
        //=============解析消息头开始=============
        reader.readByte(1);// 7E
        String msgId = reader.readByte(2);// 消息id
        String msgBodyAttr = reader.readByte(2);// 消息体属性
        int msgBodyInt = Integer.parseInt(msgBodyAttr, 16);
        boolean isVersion = (msgBodyInt & 0x4000) > 0;// 是否有版本号 取第13位是否为1 0x4000二进制是0100000000000000
        int version = 0; //2019版本开始从1递增
        if (isVersion) {
            version = Integer.parseInt(reader.readByte(1), 16); // 版本号
        }
        //如果版本号大于0 则手机号为10位
        String tid = version > 0 ? reader.readByte(10) : reader.readByte(6);// 手机号,当做id
        String msgNo = reader.readByte(2);// 消息流水
        // 是否分包
        boolean isPack = (msgBodyInt & 0x2000) > 0;// 是否分包 取第13位是否为1 0x2000二进制是0010000000000000
        int packTotal = 0;
        int packNum = 0;
        if (isPack) {
            // 如果有分包则多读4个字节
            packTotal = Integer.parseInt(reader.readByte(2), 16);
            packNum = Integer.parseInt(reader.readByte(2), 16);
        }

        boolean isRSA = (msgBodyInt & 0x400) > 0;// 消息体是否过RSA算法加密; 取第13位是否为1 0x400二进制是0000010000000000
        //=============解析消息头结束=============

        解析消息体:

//=============解析消息体开始=============
        String bodyHex = reader.readByte(msgBodyInt & 0x3ff); // 消息体属性前10位是消息体长度 0x3ff二进制是0000001111111111
        if ("0200".equals(msgId)) {//位置上报
            JTMessage t0200 = new T0200(tid, msgNo);
            t0200.decodeBody(bodyHex);
            return t0200;
        } else if ("0002".equals(msgId)) {//心跳
            JTMessage t0202 = new T0002(tid, msgNo);
            t0202.decodeBody(bodyHex);
            return t0202;
        } else if ("0003".equals(msgId)) {//注销
            JTMessage t0003 = new T0003(tid, msgNo);
            t0003.decodeBody(bodyHex);
            return t0003;
        } else if ("0100".equals(msgId)) {//注册
            JTMessage t0100 = new T0100(tid, msgNo);
            t0100.decodeBody(bodyHex);
            return t0100;
        } else if ("0102".equals(msgId)) {//鉴权
            JTMessage t0102 = new T0102(tid, msgNo);
            t0102.decodeBody(bodyHex);
            return t0102;
        } else if ("0001".equals(msgId)) {//终端通用应答
            JTMessage t0001 = new T0001(tid, msgNo);
            t0001.decodeBody(bodyHex);
            return t0001;
        } else if ("0704".equals(msgId)) {//定位数据批量上传
            JTMessage t0704 = new T0704(tid, msgNo);
            t0704.decodeBody(bodyHex);
            return t0704;
        }
        //=============解析消息体结束=============

二、设备上报流程:              Java实现符合交通部标JT808和JT1078协议服务器的思路

        注意,设备数据大批量上报的情况下,服务器需要支持高并发,netty作为天然的高并发框架,可以用作JT808服务器的接入点。

 三、JT1078服务器的搭建流程:

        1078服务器就是一个流媒体服务器,要处理的功能是接收设备上报的视频数据,解析成浏览器能够播放的格式,并通过websocket或者http协议发送到浏览器,浏览器解码观看视频。

Java实现符合交通部标JT808和JT1078协议服务器的思路

 下面是系统demo演示地址:gps.cachtek.com文章来源地址https://www.toymoban.com/news/detail-499965.html

到了这里,关于Java实现符合交通部标JT808和JT1078协议服务器的思路的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【智慧交通】NTP卫星授时服务器(时钟同步)助力交通建设

    【智慧交通】NTP卫星授时服务器(时钟同步)助力交通建设 【智慧交通】NTP卫星授时服务器(时钟同步)助力交通建设 京准电子科技官微——ahjzsz 智能交通的发展一直在不断演进,涉及到技术、政策、社会和经济等多个方面。以下是智能交通发展的一些关键趋势和方向:

    2024年03月11日
    浏览(55)
  • 使用UDP协议实现—翻译服务器

    目录 前言 1.设计思路: 2.词库设计 3.设计客户端 4.设计服务端 5.编译客户端和服务端 6.测试结果 7.总结         上一篇文章中,我们使用UDP协议编码完成了一个简单的服务器,实现数据通信,服务器设计出来后目的不仅仅只是实现数据通信,而是根据客户端发过来的请求,

    2024年02月13日
    浏览(44)
  • 2.1.4websocket协议与服务器实现

    本文基于websocket协议,在2.1.3http/https服务器的实现中TCP服务器代码的基础上实现websocket服务器。 websocket的主要应用场景 服务器主动推送数据给浏览器 websocket握手流程(在tcp三次握手之后) 浏览器发送请求 服务器接收请求并获取Sec-WebSocket-Key的值并进行相应的计算得到Sec-W

    2024年02月02日
    浏览(37)
  • vscode无法ssh远程连接到服务器:远程主机可能不符合 glibc 和 libstdc++ VS Code 服务器的先决条件

    今天vscode自动更新后无法连接到远程服务器了,提示\\\" 远程主机可能不符合 glibc 和 libstdc++ VS Code 服务器的先决条件 \\\" 并且命令窗口一直显示\\\" Waiting for server log… \\\" 困扰了我很久,发现主要原因是vscdoe自动更新到了1.86版本,与我远程服务器的glibc版本不符   我是使用了vscode1

    2024年02月22日
    浏览(54)
  • Java服务器调用Python服务器进行交互:基于Http协议的Restful风格调用(Springboot/FastApi)

    实现Java服务器调用Python服务器进行交互以及数据传输,可采用以下方法,亲测有效: 基于Restful风格进行请求调用: 框架 : Java服务器采用Springboot框架进行搭建服务 python服务器采用FastApi框架进行搭建服务 思路 :前端–Java–python–Java–前端 代码设计 :Axios-@PostMapping-请求

    2024年04月26日
    浏览(44)
  • 初识http协议,简单实现浏览器和服务器通信

    平时俗称的 “网址” 其实就是说的 URL,例如在百度上搜索一个C++ 可以看到这段网址前面有个 https 那么这个就代表着使用的是https协议,现在都是使用https协议,不过还是需要认识以下http协议 像 / ? : 等这样的字符, 已经被url当做特殊意义理解了. 因此这些字符不能随意出现。

    2024年02月14日
    浏览(49)
  • 【计算机网络】HTTP协议以及简单的HTTP服务器实现

    虽然我们说, 应用层协议是我们程序猿自己定的. 但实际上, 已经有大佬们定义了一些现成的, 又非常好用的应用层协议, 供我们直接参考使用. HTTP(超文本传输议)就是其中之一。 平时我们俗称的 “网址” 其实就是说的 URL 像 / ? : 等这样的字符, 已经被url当做特殊意义理解了.

    2024年01月20日
    浏览(63)
  • 从零开始写一个RTSP服务器(二)RTSP协议的实现

    此系列只追求精简,旨在学习RTSP协议的实现过程,不追求复杂完美,所以这里要实现的RTSP服务器为了简单,实现上同一时间只能有一个客户端,下面开始介绍实现过程 在写一个RTSP服务器之前,我们必须知道一个RTSP服务器最简单的包含两部分,一部分是RTSP的交互,一部分是

    2024年04月17日
    浏览(53)
  • esp8266模块--MQTT协议连接服务器实现数据接收和发送+源码

    首先推荐中国移动的代码,我觉得中国移动的代码更为合理:(但是有一些其他的模块在里面) OneNET开发板代码、资料--2020-09-27--标准板、Mini板bug修复 - 开发板专区 - OneNET设备云论坛 (10086.cn) 以及这位b站up做的视频:(wifi模块在p9节) 【挽救小白第一季】STM32+8266+小程序智能

    2024年02月08日
    浏览(63)
  • nodejs 实现MQTT协议的服务器端和客户端的双向交互

    公司和第三方合作开发一个传感器项目,想要通过电脑或者手机去控制项目现场的传感器控制情况。现在的最大问题在于,现场的边缘终端设备接入的公网方式是无线接入,无法获取固定IP,所以常规的HTTP协议通信就没法做,现在打算使用MQTT来实现云平台和边缘终端(传感器

    2024年02月05日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包