package com.mes.netty; import com.mes.ui.MesClient; import com.mes.ui.MesRevice; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; import java.text.SimpleDateFormat; import java.util.Date; public class NettyClientHandler extends ChannelInboundHandlerAdapter { private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public static byte[] responseByte; @Override public void channelActive(ChannelHandlerContext ctx) throws Exception { System.out.println("mes connecting:" + sdf.format(new Date())); } @Override public void handlerRemoved(ChannelHandlerContext ctx) throws Exception { Channel channel = ctx.channel(); System.err.println("close tcp, ip:" + channel.remoteAddress()); MesClient.tcp_connect_flag = false; MesClient.setTcpStatus(); // 关闭通道 channel.close(); } @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { System.out.println("msg:"+msg); String mes_msg = formatResult(msg.toString()); if(mes_msg == null || mes_msg.isEmpty()){ // error msg return; } String msg_type = ProtocolParam.getMsgType(mes_msg); System.out.println("msg_type="+msg_type); String processMsgRet = MesMsgUtils.processMsg(mes_msg, msg_type); System.out.println("processMsgRet="+processMsgRet); switch(msg_type) { case "AQDW": // 查询质量 MesRevice.checkQualityRevice(processMsgRet,mes_msg); break; case "MKSW": MesRevice.startRevice(processMsgRet,mes_msg); break; case "MBDW": MesRevice.bindRevice(processMsgRet,mes_msg); break; case "MJBW": MesRevice.unbindRevice(processMsgRet,mes_msg); break; case "MQDW": MesRevice.updateResultRevice(processMsgRet,mes_msg); break; } } @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { ctx.close(); } private String formatResult(String msg){ System.err.println("length:" + msg.length() + " content:" + msg); String msgType = msg.substring(0,2).trim(); if(msgType.equals("OK")){ return msg.substring(3,msg.length()); }else{ return ""; } } }