package com.flightfeather.obd.socket
|
|
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() {
|
|
val attributeKey = AttributeKey.valueOf<String>("deviceCode")
|
|
override fun channelRegistered(ctx: ChannelHandlerContext?) {
|
super.channelRegistered(ctx)
|
// ctx?.fireChannelActive()
|
}
|
|
override fun channelActive(ctx: ChannelHandlerContext?) {
|
super.channelActive(ctx)
|
}
|
|
override fun channelRead(ctx: ChannelHandlerContext?, msg: Any?) {
|
super.channelRead(ctx, msg)
|
|
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)
|
}
|
|
}
|
|
override fun channelReadComplete(ctx: ChannelHandlerContext?) {
|
super.channelReadComplete(ctx)
|
}
|
|
override fun channelInactive(ctx: ChannelHandlerContext?) {
|
super.channelInactive(ctx)
|
}
|
|
override fun exceptionCaught(ctx: ChannelHandlerContext?, cause: Throwable?) {
|
cause?.printStackTrace()
|
ctx?.close()
|
}
|
}
|