NettyClientHandler.java 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package com.mes.netty;
  2. import com.mes.ui.MesClient;
  3. import com.mes.ui.MesRevice;
  4. import io.netty.channel.Channel;
  5. import io.netty.channel.ChannelHandlerContext;
  6. import io.netty.channel.ChannelInboundHandlerAdapter;
  7. import java.text.SimpleDateFormat;
  8. import java.util.Date;
  9. public class NettyClientHandler extends ChannelInboundHandlerAdapter {
  10. private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  11. public static byte[] responseByte;
  12. @Override
  13. public void channelActive(ChannelHandlerContext ctx) throws Exception {
  14. System.out.println("mes connecting:" + sdf.format(new Date()));
  15. }
  16. @Override
  17. public void handlerRemoved(ChannelHandlerContext ctx) throws Exception {
  18. Channel channel = ctx.channel();
  19. System.err.println("close tcp, ip:" + channel.remoteAddress());
  20. MesClient.tcp_connect_flag = false;
  21. MesClient.setTcpStatus();
  22. // 关闭通道
  23. channel.close();
  24. }
  25. @Override
  26. public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
  27. System.out.println("msg:"+msg);
  28. String mes_msg = formatResult(msg.toString());
  29. if(mes_msg == null || mes_msg.isEmpty()){ // error msg
  30. return;
  31. }
  32. String msg_type = ProtocolParam.getMsgType(mes_msg);
  33. System.out.println("msg_type="+msg_type);
  34. String processMsgRet = MesMsgUtils.processMsg(mes_msg, msg_type);
  35. System.out.println("processMsgRet="+processMsgRet);
  36. switch(msg_type) {
  37. case "AQDW": // 查询质量
  38. MesRevice.checkQualityRevice(processMsgRet,mes_msg);
  39. break;
  40. case "MKSW":
  41. MesRevice.startRevice(processMsgRet,mes_msg);
  42. break;
  43. case "MBDW":
  44. MesRevice.bindRevice(processMsgRet,mes_msg);
  45. break;
  46. case "MJBW":
  47. MesRevice.unbindRevice(processMsgRet,mes_msg);
  48. break;
  49. case "MQDW":
  50. MesRevice.updateResultRevice(processMsgRet,mes_msg);
  51. break;
  52. }
  53. }
  54. @Override
  55. public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
  56. ctx.close();
  57. }
  58. private String formatResult(String msg){
  59. System.err.println("length:" + msg.length() + " content:" + msg);
  60. String msgType = msg.substring(0,2).trim();
  61. if(msgType.equals("OK")){
  62. return msg.substring(3,msg.length());
  63. }else{
  64. return "";
  65. }
  66. }
  67. }