我用mina框架定义服务端,当客户端给我发数据包后我要先反馈数据包,在解析数据包,在反馈数据包

发布于 2021-11-25 16:06:05 字数 1893 浏览 844 评论 1

@Gaischen 你好,想跟你请教个问题:

这个我要怎么写?希望您能帮我一下!!

客户端发给我,我就要给他反馈,我应该怎么写?我解析数据成功后,我要怎么再一次反馈给他数据包?

实时交通数据校验信息数据包(0x0A)格式如下:

序 号   字 段长 度(字 节 ) 解 释数 据 范 围( HEX) 
1 数据包类型1 实时交通数据校验信息数据包0x0A 
2 时间序号2 
3 校验结果信息代码2 
“实时交通数据校验信息数据包”( 0x0A)为定长数据包,包长为 5 个字节。
时间序号是 DSC 接收到的“实时交通数据包”( 0x01)的时间序号;当反馈数据正
确代码时,“校验结果信息代码 ”取值为“FF FF”;当反馈数据错误代码时 ,“校验
结果信息代码”将取值为发现的第一个错误的错误代码(错误代码见下表)。
示例数据(包括:帧头、包长、数据包内容、CRC 校验、帧尾):
如时间序号为 15 的“实时交通数据包”数据格式正确,DSC 向 RD 回复:AA 
AA 05 00 0A 0F 00 FF FF D4 A5 EE EE




public class  TmsIoHandler extends IoHandlerAdapter{
    @Override
    public void messageReceived(IoSession session, Object message)
    throws Exception {
    System.out.println("session是"+session);
    // TODO Auto-generated method stub
    String addr=session.getRemoteAddress().toString(); // 示例值为  /127.0.0.1:50641
    System.out.println(addr+"向本机服务发送内容:"+String.valueOf(CommUtils2.toHexString((byte[])message)));
    logger.debug("设备"+session.getAttribute("deviceId")+"("+addr+")接收到信息:"+String.valueOf(CommUtils2.toHexString((byte[])message)));
    TrRecData jkVdRecData = new TrRecData();
//     System.out.println("jkVdRecData是"+jkVdRecData);
    jkVdRecData.setDeviceId(TrReciveTask.this.exchangeCfg.get().getDeviceId());
    TrReciveTask.this.recService.saveData(jkVdRecData, (byte[])message);
   
    session.setAttribute(jkVdRecData.getSerialNumber()+"FFFF");
   
    session.close();
    }


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

把昨日还给我 2021-11-29 23:15:12

开两个线程,一个是不断socek轮询,如果有客户端发过来,就反馈,之后解析数据包,数据包成功了,就通知反馈线程,回馈客户端

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文