| | |
| | | package com.flightfeather.obd.socket |
| | | |
| | | import com.flightfeather.obd.domain.entity.ObdData |
| | | import com.google.gson.Gson |
| | | import io.netty.channel.ChannelHandler |
| | | import io.netty.channel.ChannelHandlerContext |
| | | import io.netty.channel.ChannelInboundHandlerAdapter |
| | | import io.netty.util.AttributeKey |
| | | import java.lang.StringBuilder |
| | | import java.text.SimpleDateFormat |
| | | import java.util.* |
| | | |
| | | |
| | | class ServerHandler : ChannelInboundHandlerAdapter() { |
| | |
| | | |
| | | override fun channelRegistered(ctx: ChannelHandlerContext?) { |
| | | super.channelRegistered(ctx) |
| | | // ctx?.fireChannelActive() |
| | | } |
| | | |
| | | override fun channelActive(ctx: ChannelHandlerContext?) { |
| | |
| | | |
| | | override fun channelRead(ctx: ChannelHandlerContext?, msg: Any?) { |
| | | super.channelRead(ctx, msg) |
| | | println("------收到的原始数据:$msg") |
| | | if (msg is String) { |
| | | MessageManager().dealMsg(msg, ctx) |
| | | } |
| | | |
| | | // val attribute = ctx?.channel()?.attr(attributeKey)?.apply { |
| | | // if (get() == null) { |
| | | // set(data.obdVin) |
| | | // } |
| | | // } |
| | | val sb = StringBuilder() |
| | | |
| | | if (msg is ByteArray) { |
| | | println("------收到的原始数据:[ip:${ctx?.channel()?.remoteAddress()}] ${SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Date())}") |
| | | msg.forEach { |
| | | var a = 0 |
| | | a = if (it < 0) { |
| | | it + 256 |
| | | } else { |
| | | it.toInt() |
| | | } |
| | | val s = if (a < 16) { |
| | | "0${a.toString(16)}" |
| | | } else { |
| | | a.toString(16) |
| | | } |
| | | print("$s ") |
| | | sb.append(s).append(" ") |
| | | } |
| | | sb.deleteCharAt(sb.length - 1) |
| | | } |
| | | val str = sb.toString() |
| | | if (str.isNotEmpty()) { |
| | | MessageManager().dealStringMsg(str, ctx) |
| | | } |
| | | |
| | | } |
| | | |