package com.ld.igds.protocol.beibo.grainv1.client; import com.ld.igds.protocol.beibo.grainv1.analysis.AnalysisService; import com.ld.igds.util.BytesUtil; import com.ld.igds.util.SpringUtil; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import io.netty.util.internal.logging.InternalLogger; import io.netty.util.internal.logging.InternalLoggerFactory; import java.net.InetSocketAddress; /** * Handles a client-side channel. */ public class ClientHandler extends SimpleChannelInboundHandler { private AnalysisService analysisService; private final InternalLogger log = InternalLoggerFactory.getInstance(this.getClass()); @Override public void channelActive(ChannelHandlerContext ctx) { InetSocketAddress insocket = (InetSocketAddress) ctx.channel() .remoteAddress(); log.info("分机成功连接,IP={},port={}", insocket.getAddress() .getHostAddress(), insocket.getPort()); } @Override public void channelInactive(ChannelHandlerContext ctx) throws Exception { super.channelInactive(ctx); InetSocketAddress insocket = (InetSocketAddress) ctx.channel() .remoteAddress(); log.info("分机断开连接,IP={},port={}", insocket.getAddress(),insocket.getPort()); } @Override public void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception { byte[] bytes = (byte[]) msg; String result = BytesUtil.bytesToString(bytes); log.info("分机返回信息=" + result); // InetSocketAddress insocket = (InetSocketAddress) ctx.channel().remoteAddress(); //解析 if (null == analysisService) { analysisService = (AnalysisService) SpringUtil.getBean(AnalysisService.BEAN_ID); } // analysisService.analysis(result); } @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { ctx.close(); } }