whyclj
2020-10-23 291d27a34b52911dbcfd8232f0685d34b0fc96a8
EquieDeviceData/src/com/dev/data/SteamTurbineUDPServer_Thread.java
@@ -44,6 +44,7 @@
      System.out.println("SteamTurbineUDPServer_Thread start at "+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
      try {
         byte[] data = null;
         int conn_error_count = 0;
          while(true) {
             DatagramSocket ds = null;
            try {
@@ -51,27 +52,37 @@
               DatagramPacket packet = new DatagramPacket(data, data.length);
               //监听指定的端口
               ds = new DatagramSocket(server_port);
               ds.setSoTimeout(5000);
               conn_error_count = 0;
               while (true) {
                  ds.receive(packet);
                  byte[] headCount = new byte[2];
                  System.arraycopy(data, 0, headCount, 0, headCount.length);
                  //System.out.println("数据包长度"+createPackHeadCount(data));
                  BaseData basedata = new BaseData();
                  ByteBuffer bf = ByteBuffer.allocate(createPackHeadCount(data));
                  if(createPackHeadCount(data) > data.length) {
                     continue;      //过滤超标数据帧
                  }
                  bf.order(ByteOrder.LITTLE_ENDIAN);
                    bf.put(data,0,createPackHeadCount(data));
                    bf.flip();
                    //System.out.println(ComFn.bytesToHexString(data, createPackHeadCount(data)));
                  if(basedata.putSteamTurByteBuffer(bf,cfg.isEquie_device_udppackage_cheak())) {
                     String client_ip = packet.getSocketAddress().toString();
                     RecordUDPPackage.RecordUDPPackageData(RecordUDPPackage.PackageType_SteamTurbine, client_ip, bf.array());
                     SteamTurbine_Thread steam_thread = new SteamTurbine_Thread(conn_pool, devices,cfgdatas,basedata);
                     new Thread(steam_thread).start();
                     //System.out.println(basedata);
                  try {
                     ds.receive(packet);
                     byte[] headCount = new byte[2];
                     System.arraycopy(data, 0, headCount, 0, headCount.length);
                     //System.out.println("数据包长度"+createPackHeadCount(data));
                     BaseData basedata = new BaseData();
                     ByteBuffer bf = ByteBuffer.allocate(createPackHeadCount(data));
                     if(createPackHeadCount(data) > data.length) {
                        continue;      //过滤超标数据帧
                     }
                     bf.order(ByteOrder.LITTLE_ENDIAN);
                     bf.put(data,0,createPackHeadCount(data));
                     bf.flip();
                     //System.out.println(ComFn.bytesToHexString(data, createPackHeadCount(data)));
                     if(basedata.putSteamTurByteBuffer(bf,cfg.isEquie_device_udppackage_cheak())) {
                        String client_ip = packet.getSocketAddress().toString();
                        RecordUDPPackage.RecordUDPPackageData(RecordUDPPackage.PackageType_SteamTurbine, client_ip, bf.array());
                        SteamTurbine_Thread steam_thread = new SteamTurbine_Thread(conn_pool, devices,cfgdatas,basedata);
                        new Thread(steam_thread).start();
                        //System.out.println(basedata);
                     }
                  } catch (Exception e) {
                     conn_error_count++;
                     if(conn_error_count > 6) {
                        break;
                     }
                     //e.printStackTrace();
                  }
                  //测试程序接收异常情况下,是否能正常运行
                  //System.out.println(1/0);