⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 udpreceive.java

📁 这是一个udp接收程序
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
          }
          else if (revDateArray[10].substring(3, 6).equals("MAR")) {
            revDateArray[10] = revDateArray[10].replaceAll(revDateArray[10].
                substring(3, 6), "03");
          }
          else if (revDateArray[10].substring(3, 6).equals("API")) {
            revDateArray[10] = revDateArray[10].replaceAll(revDateArray[10].
                substring(3, 6), "04");
          }
          else if (revDateArray[10].substring(3, 6).equals("MAY")) {
            revDateArray[10] = revDateArray[10].replaceAll(revDateArray[10].
                substring(3, 6), "05");
          }
          else if (revDateArray[10].substring(3, 6).equals("JUN")) {
            revDateArray[10] = revDateArray[10].replaceAll(revDateArray[10].
                substring(3, 6), "06");
          }
          else if (revDateArray[10].substring(3, 6).equals("JUL")) {
            revDateArray[10] = revDateArray[10].replaceAll(revDateArray[10].
                substring(3, 6), "07");
          }
          else if (revDateArray[10].substring(3, 6).equals("AUG")) {
            revDateArray[10] = revDateArray[10].replaceAll(revDateArray[10].
                substring(3, 6), "08");
          }
          else if (revDateArray[10].substring(3, 6).equals("SEP")) {
            revDateArray[10] = revDateArray[10].replaceAll(revDateArray[10].
                substring(3, 6), "09");
          }
          else if (revDateArray[10].substring(3, 6).equals("OCT")) {
            revDateArray[10] = revDateArray[10].replaceAll(revDateArray[10].
                substring(3, 6), "10");
          }
          else if (revDateArray[10].substring(3, 6).equals("NOV")) {
            revDateArray[10] = revDateArray[10].replaceAll(revDateArray[10].
                substring(3, 6), "11");
          }
          else if (revDateArray[10].substring(3, 6).equals("DEC")) {
            revDateArray[10] = revDateArray[10].replaceAll(revDateArray[10].
                substring(3, 6), "12");
          }

          //时间转换成秒
          SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
          try {
            Date d1 = df.parse(revDateArray[10]);
            Date d2 = df.parse("00-00-1970 00:00:00");
            long diff = d1.getTime() - d2.getTime();
            long sec = (diff / 1000) - 2764800;
            long milsec = sec * 1000;
            String str = Long.toString(milsec);
            System.out.println(milsec);
            revDateArray[10] = str;
            System.out.println(revDateArray[10]);
          }
          catch (Exception e) {
          }
          //最终结果
          //System.out.println(revDateArray[0] +" "+revDateArray[1]+" " + revDateArray[2] +" "+revDateArray[3]+" " + revDateArray[4] +" "+ revDateArray[5]+" "+revDateArray[6]+" " + revDateArray[7]+" " + revDateArray[8]+" "+ revDateArray[9]+" "+ revDateArray[10]+" "+ revDateArray[11]);
          messageDate = revDateArray[0] + " " + revDateArray[1] + " " +
              revDateArray[2] + " " + revDateArray[3] + " " + revDateArray[4] +
              " " + revDateArray[5] + " " + revDateArray[6] + " " +
              revDateArray[7] + " " + revDateArray[8] + " " + revDateArray[9] +
              " " + revDateArray[10] + " " + revDateArray[11];
          System.out.println(messageDate.length());

          //保存UDP数据到数据库,每天创建一个新表,表名:udpdata_(date);
          Calendar TodayCanlendar = Calendar.getInstance();
          Date TodayDate = TodayCanlendar.getTime();
          String str_datetime = DateFormat.format(TodayDate);
          String str_date = str_datetime.substring(0, 10);

          try {
            String tableName = "udpdata_" + str_date;
            System.out.println("表名:" + tableName);
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Conn = DriverManager.getConnection(DBUrl);
            Stmt = Conn.createStatement();
            String sqlInsert = "insert into " + tableName +
                " (revtime,messagedate) values('" + str_datetime + "','" +
                messageDate + "')";
            //判断表是否存在,存在直接插入新纪录,不存在创建新表并插入新纪录
            Rs = Conn.getMetaData().getTables(null, null, tableName, null);
            if (Rs.next()) {
              Stmt.executeUpdate(sqlInsert);
              Conn.commit();
            }
            else {
              //新的一天,创建一个新表并保存数据,同时删除30天前的表!
              //建新表并插入数据
              String sqlCreateTable = "create table " + tableName +
                  " (dataid counter, revtime varchar(20),messagedate varchar(250),sendflag bit)";
              Stmt.executeUpdate(sqlCreateTable);
              Conn.commit();
              Stmt.executeUpdate(sqlInsert);
              Conn.commit();
              //删除30天前的表
              int daynum = TodayCanlendar.get(Calendar.DAY_OF_YEAR);
              TodayCanlendar.set(Calendar.DAY_OF_YEAR, daynum - 30);
              String str_DelDate = DateFormat.format(TodayCanlendar.getTime());
              String str_DelTable = "udpdata_" + str_DelDate.substring(0, 10);
              Rs = Conn.getMetaData().getTables(null, null, str_DelTable, null);
              if (Rs.next()) {
                try {
                  Stmt.execute("Drop table " + str_DelTable);
                  Conn.commit();
                }
                catch (Exception ex) {
                  System.out.println(ex);
                }
              }

            }
            Stmt.close();
            Conn.close();
          }
          catch (Exception ex) {
            ///////////////////////////////////////////////////
            System.out.println(ex.toString());
          }

          DefaultTableModel tableModel = (DefaultTableModel) Main.dataTable.
              getModel();

          for (i = 0; i < 3; i++) {
            //System.out.println(almstate[i] + almtime[i] + almmessage[i]);
            String[] str_row = {
                almstate[i], almtime[i], almmessage[i]}; //将一行的数据存在str_row 字符串数组里
            tableModel.addRow(str_row);
            tableModel.removeRow(0);
          }
          Main.dataTable.setModel(tableModel);
          //JTable中显示的数据
          almstate[0] = almstate[1];
          almstate[1] = almstate[2];
          almstate[2] = revDateArray[1];
          almtime[0] = almtime[1];
          almtime[1] = almtime[2];
          almtime[2] = str_datetime;
          almmessage[0] = almmessage[1];
          almmessage[1] = almmessage[2];
          almmessage[2] = messageDate;
          //DefaultTableModel tableModel = (DefaultTableModel) Main.dataTable.getModel();
          for (i = 0; i < 3; i++) {

            String[] str_row = {
                almstate[i], almtime[i], almmessage[i]}; //将一行的数据存在str_row 字符串数组里
            tableModel.addRow(str_row);
            tableModel.removeRow(0);
          }
          Main.dataTable.setModel(tableModel);

          //建立obj表格,确定清除告警是否发送,
          //根据数据过滤标准,判断数据是否发送。
          String AlarmLevel = revDateArray[1].trim();
          String AlarmObject = revDateArray[0] + " " + revDateArray[4] +
              revDateArray[5] + " " + revDateArray[6] + revDateArray[7] +
              revDateArray[8];
          String AlarmMessage = revDateArray[11];
//其中告警等级为Clear不受过滤标准限制,而是根据是否有更高等级的告警来决定
//如先前有更高等级的告警,则发送该告警,置发送标志为True,同时删除alarmobj表中的告警对象,否则不发送!
          SendFlag = "false";
          if (AlarmLevel.equals("5")) {
            try {
              Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
              Conn = DriverManager.getConnection(DBUrl);
              Stmt = Conn.createStatement();
              Rs = Stmt.executeQuery(
                  "Select * from alarmobj where objectid = '" + AlarmObject +
                  "'");
              if (Rs.next()) {
                SendFlag = "true";
                Stmt.executeUpdate("delete from alarmobj where objectid = '" +
                                   AlarmObject + "'");
              }
              Conn.close();
              Stmt.close();
            }
            catch (Exception eee) { //数据库读取异常
            }
          }
          else {
           //只有有状态的才向alarmobj中添加,包括-on和告警组确定告警开始的那些状态,alarming==true代表告警存在,向alarmobj中添加记录
            if (alarming.equals("true")) {
              try {
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                Conn = DriverManager.getConnection(DBUrl);
                Stmt = Conn.createStatement();
                Rs = Stmt.executeQuery(
                    "Select * from alarmobj where objectid = '" + AlarmObject +
                    "'");
                if (Rs.next()) {
                  Stmt.executeUpdate("delete from alarmobj where objectid = '" +
                                     AlarmObject + "'");
                }
                Stmt.executeUpdate(
                    "insert into alarmobj (objectid,alarmlevel,alarmmessage) values ('" +
                    AlarmObject + "'," + revDateArray[1] + ",'" + AlarmMessage +
                    "')");
                Conn.close();
                Stmt.close();
              }
              catch (Exception eee) { //数据库读取异常
              }
            }
          }

          //调用Trap发送方法

          if (revDateArray[1].equals("1") &&
              ValueAll.CheckBoxNMI.equals("true")) {
            SendFlag = "true";
          }
          else if (revDateArray[1].equals("2") &&
                  ValueAll.CheckBoxMINOR.equals("false")) {
           SendFlag = "false";
         }

         else if (revDateArray[1].equals("2") &&
             ValueAll.CheckBoxMAJOR.equals("true")) {
            SendFlag = "true";
            System.out.println("OK");
          }
         else if (revDateArray[1].equals("3") &&
             ValueAll.CheckBoxMINOR.equals("true")) {
            SendFlag = "true";
          }

          else if (revDateArray[1].equals("6") &&
                   ValueAll.CheckBoxINFO.equals("true")) {
            SendFlag = "true";
          }
          else {SendFlag = "false";}
          if (SendFlag.equals("true")) {
            SnmpV1TrapSend snmpv1trapsend = new SnmpV1TrapSend();
            try {
              System.out.println("aaaa");
              snmpv1trapsend.TrapSend(revDateArray, TrapIp1, TrapPort);
            }
            catch (Exception eee) {
            }
          }
          System.out.println("SendFlag="+SendFlag);
        }
      }

      if (!dataSocket.isClosed()) {
        dataSocket.close();
      }
    }
    catch (IOException e) {}
  }

  public synchronized boolean getFlag() {
    return runFlag;
  }

  public synchronized void stopReceive() {
    runFlag = false;
    if (runThread != null) {
      runThread.interrupt();
      if (!dataSocket.isClosed()) {
        dataSocket.close();
      }
      System.out.println(runThread.getName() + "线程停止!");
    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -