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

📄 udpreceive.java~2~

📁 这是一个udp接收程序
💻 JAVA~2~
字号:
package zjkdata;

import java.io.*;
import java.net.*;
import java.sql.*;
import java.awt.*;
import java.lang.*;
import java.util.*;
import javax.swing.*;
import java.util.Date;
import java.lang.String;
import java.awt.event.*;
import java.util.Calendar;
import javax.swing.border.*;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.StringTokenizer;
import com.adventnet.snmp.snmp2.*;
import java.text.SimpleDateFormat;
import javax.swing.table.DefaultTableModel;
import java.io.UnsupportedEncodingException;
import javax.swing.table.DefaultTableCellRenderer;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2007</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */

public class UdpReceive extends Thread {
  private volatile boolean runFlag;
  private Thread runThread;
  private String TrapPort,TrapIp1,TrapIp2;
  private int UdpPort;
  private volatile DatagramSocket dataSocket;
  private DatagramPacket dataPacket;
  private byte revByte[];
  private String revDate;
  private String revDateArray[];
  private Connection Conn;
  private Statement Stmt;
  private ResultSet Rs;
  private String DBUrl = "jdbc:odbc:datalink";
  String almstate[]={" "," "," "};
  String almtime[]={" "," "," "};
  String almmessage[]={" "," "," "};
  String[] columnNames  = {"等级","告警时间","接收到的UDP告警消息"};

  public void run() {
    runThread = Thread.currentThread();
    runFlag = true;
    SimpleDateFormat DateFormat=new SimpleDateFormat("yyyy_MM_dd HH:mm:ss");

 //获取udp接收端口参数
    try {
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
      Conn = DriverManager.getConnection(DBUrl);
      Stmt = Conn.createStatement();
      Rs = Stmt.executeQuery("Select * from parameter");
      if (Rs.next())
      {
        UdpPort = Integer.parseInt(Rs.getString("udpport"));
        TrapPort = Rs.getString("trapport");
        TrapIp1 = Rs.getString("trapip1");
        TrapIp2 = Rs.getString("trapip2");
       }
       Conn.close();
       Stmt.close();
    }

    catch (Exception eee) { //数据库读取异常
    }

   try {
     dataSocket = new DatagramSocket(UdpPort);
     revByte = new byte[2000];
     revDateArray = new String[100];
     dataPacket = new DatagramPacket(revByte, revByte.length);
     revDate = "";
     int revDataNumber = 0;

     while (getFlag()) {
      Main.SystemLable.setForeground(Color.blue);
      revDataNumber++;

       //等待接受UDP数据
       dataSocket.receive(dataPacket);
       try{
         Main.SystemLable.setIcon(new ImageIcon(
             "image/statusrun.png"));
       }
       catch(Exception ex){
      //异常处理
       }
       Main.SystemLable.setText("系统运行状态:数据采集正在运行,接收到"+revDataNumber+"条告警数据!");
      String messageDate ="";


       if (dataPacket.getLength()>0 ) {
              revDate = new String(revByte, 0, dataPacket.getLength(),"utf-8");






          if(revDate.indexOf("-ON")>0|| revDate.indexOf("-OFF")>0)
              {

                int i = 0;
          while (revDateDiv.hasMoreTokens()){
            revDateArray[i] = revDateDiv.nextToken().trim();

          messageDate = messageDate + "/" + revDateArray[i];
          i++;

               }
       else if ()
             {


             }
        else ;







                   StringTokenizer revDateDiv = new StringTokenizer(revDate.trim(), " ", false);
                    System.out.println("all is " + revDateDiv.countTokens());

                   int i = 0;
                   while (revDateDiv.hasMoreTokens()){
                   revDateArray[i] = revDateDiv.nextToken().trim();
                   System.out.println(revDateArray[i]);
                   i++;
                  }








    /**

         StringTokenizer revDateDiv = new StringTokenizer(revDate.trim(), "\n", false);
         System.out.println("all is " + revDateDiv.countTokens());
         int i = 0;
         while (revDateDiv.hasMoreTokens()){
           revDateArray[i] = revDateDiv.nextToken().trim();
           System.out.println(revDateArray[i]);
           i++;
         }


**/
         /**
         revDate = new String(revByte, 0, dataPacket.getLength(),"utf-8");
         StringTokenizer revDateDiv = new StringTokenizer(revDate.trim(), "\n", false);
         System.out.println("all is " + revDateDiv.countTokens());
         int i = 0;
         while (revDateDiv.hasMoreTokens()){
           revDateArray[i] = revDateDiv.nextToken().trim();
           messageDate = messageDate + "/" + revDateArray[i];
           i++;
         }
         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 {
             //新的一天,创建一个新表并保存数据
             String sqlCreateTable = "create table " + tableName + " (dataid counter, revtime varchar(20),messagedate varchar(250))";
             Stmt.executeUpdate(sqlCreateTable);
             Conn.commit();
             Stmt.executeUpdate(sqlInsert);
             Conn.commit();
             Stmt.close();
           }
           Conn.close();
         }
         catch(Exception ex){
         ///////////////////////////////////////////////////
         System.out.println("aaaaaaa");
         }
         if (revDateArray[1].trim().equals("4")) {
           revDateArray[1] = "开关量";
         }
         if (revDateArray[1].trim().equals("5")) {
           revDateArray[1] = "模拟量";
         }
         switch(Integer.parseInt(revDateArray[3].trim())){
           case 1:
             revDateArray[3] = "未知告警类型";
           case 2:
             revDateArray[3] = "正常";
           case 3:
             revDateArray[3] = "越上限";
           case 4:
             revDateArray[3] = "越上上限";
           case 5:
             revDateArray[3] = "越下限";
           case 6:
             revDateArray[3] = "越下下限";
           case 7:
             revDateArray[3] = "开关跳变";
           default:
             revDateArray[3] = "未知告警类型";
       }

       //JTable中显示的数据
       almstate[0] = almstate[1];
       almstate[1] = almstate[2];
       almstate[2] = revDateArray[5];
       almtime[0] = almtime[1];
       almtime[1] = almtime[2];
       almtime[2] = str_datetime;
       almmessage[0] = almmessage[1];
       almmessage[1] = almmessage[2];
       if (revDateArray[1] == "开关量") {
         almmessage[2] = revDateArray[22] + ";" +
             revDateArray[24] +":"+ revDateArray[27] + ";开关量;" + revDateArray[3] +
             ";当前值:" + revDateArray[15] + ";原来值:" + revDateArray[16];
       }
       if (revDateArray[1] == "模拟量") {
         almmessage[2] = revDateArray[22] + ";" +
             revDateArray[24] +":"+ revDateArray[27] + ";开关量;" + revDateArray[3] +
             ";当前值:" + revDateArray[13] + ";原来值:" + revDateArray[14];
       }
       DefaultTableModel tableModel = (DefaultTableModel) Main.dataTable.
           getModel();
       i=0;
       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);//

//调用Trap发送方法
         SnmpV1TrapSend snmpv1trapsend = new SnmpV1TrapSend();
         try {
           System.out.println("aaaa");

             snmpv1trapsend.TrapSend(revDateArray,TrapIp1,TrapPort);
           snmpv1trapsend.TrapSend(revDateArray,TrapIp2,TrapPort);
         }
         catch (Exception eee) {
         }
         **/


     }
   }
      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 + -