📄 udpreceive.java~3~
字号:
package zjkdata;
import java.io.*;
import java.net.*;
import java.sql.*;
import java.awt.*;
import java.lang.*;
import java.lang.Long;
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;
import java.util.regex.*;
/**
* <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 alarmplace;
private String revDateArray[],revDtatenull[];
private String revDateys[];
private String month[];
private Connection Conn;
private Statement Stmt;
private ResultSet Rs;
private String DBUrl = "jdbc:odbc:datalink";
String almstate[] = {
" ", " ", " "};
String almtime[] = {
" ", " ", " "};
String almmessage[] = {
" ", " ", " "};
String[] columnNames = {
"等级", "告警时间", "接收到的UDP告警消息"};
Pattern p1;
Matcher m1;
String regEx1;
boolean result1;
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];
revDateys=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)
{
//确定告警位置
for(int i=0;i<100;i++){revDateArray[i]="";}//把数组里面的数据清空
revDate = new String(revByte, 3, dataPacket.getLength()-3, "utf-8");
//revDate = new String(revByte, 3, dataPacket.getLength(),"US-ASCII");
System.out.println(revDate);
String regEx1 = "([0-9]{2}-[0-9]{2}-[0-9]{2})";
Pattern p1 = Pattern.compile(regEx1);
Matcher m1 = p1.matcher(revDate);
boolean result1 = m1.find();
while (result1)
{
alarmplace = m1.group();
revDateArray[6] = alarmplace.substring(0,2);
revDateArray[7] = alarmplace.substring(3,5);
revDateArray[8] = alarmplace.substring(6);
break;
}
//将第一行标准的格式拆分
StringTokenizer revDateDiv = new StringTokenizer(revDate.trim()," ", false);
int Divnum=revDateDiv.countTokens();
int i = 0;
while (revDateDiv.hasMoreTokens())
{
revDateys[i] = revDateDiv.nextToken().trim();
i++;
}
for(i=12;i<Divnum;i++)
{
revDateArray[11] = revDateArray[11] + " "+revDateys[i];
}
revDateArray[0] = "zjk";
revDateArray[1]=revDateys[0];
revDateArray[2]=revDateys[1];
revDateArray[3]=revDateys[2];
revDateArray[4]=revDateys[3];
revDateArray[5]=revDateys[5];
revDateArray[9]=revDateys[8];
revDateArray[10]=revDateys[9]+" "+revDateys[10];
//分类1,包含-OFF时的情况
if (revDate.indexOf("-OFF") > 0)
{revDateArray[1]="5";}
//分类2,三个字段匹配,告警号确定开始、结束018,019
else if (revDateArray[4].equals("DTUCTL"))
{
switch (Integer.parseInt(revDateArray[5].trim()))
{
case 19:
revDateArray[5] = "018";
revDateArray[1] = "5";
break;
default: break ;
}
}
//port 003 004 告警位置只和槽位的前两位有关,告警号确定开始、结束
else if (revDateArray[4].equals("PORT"))
{
switch (Integer.parseInt(revDateArray[5].trim()))
{
case 3:revDateArray[8]=" "; break;
case 4:revDateArray[8]=" ";
revDateArray[1] = "5";
revDateArray[5] = "003";
break;
default: break ;
}
}
//shelf确定故障位置,告警号确定告警开始,结束
else if (revDateArray[4].equalsIgnoreCase("UTS_HW"))
{
int len=revDateArray[11].length();
switch (Integer.parseInt(revDateArray[5].trim()))
{ //告警开始的告警号
case 005:
case 006:
case 007:
case 70:
case 133:
case 134:
case 135:
case 198:
case 004:
case 012:
case 132:
case 140:
case 002:
case 130:
case 003:
case 010:
case 011:
case 013:
case 14:
case 15:
case 21:
case 22:
case 23:
case 68:
case 72:
case 74:
case 76:
case 78:
case 80:
case 82:
case 86:
case 131:
case 138:
case 139:
case 141:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -