package com.ld.igds.protocol.beibo.grain.client; import com.ld.igds.protocol.beibo.grain.analysis.AnalysisService; import com.ld.igds.util.BytesUtil; 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 org.springframework.beans.factory.annotation.Autowired; import java.net.InetSocketAddress; /** * Handles a client-side channel. */ public class ClientHandler extends SimpleChannelInboundHandler { @Autowired 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(); //解析 analysisService.analysis(result); } @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { ctx.close(); } }