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

📄 mythread.java

📁 实现了网站是否正常的简单监控系统
💻 JAVA
字号:
package mapabc;
/**
 * <p>Title: 服务器监控</p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: Mapabc.com</p>
 * @author wangchangbao
 * @version 1.0
 */

import java.io.*;
import java.net.*;
import java.util.*;
import java.util.Calendar;
class Mythread extends Thread
{
    int pauseTime;//延时
    int number;//监控服务器数量

    int address_Number;//邮件地址的数量
    int count1[];//累加不工作的次数
    int send_control[];
    String count[];//记录服务器的工作状态
    String m_servlet[]={"","","","","","","","","","","","","","","","","","","",""};//存储服务器的地址
    String Time[]={"","","","","","","","","","","","","","","","","","","",""};//记录服务器不工作时的时间
    String a_ddress[]={"","","","","","","","","",""};//存储邮箱的地址
    public void SendMail(int order)//发邮件
    {try
      {
        for (int i = 0; i < address_Number; i++) {
          Mail sml = new Mail();
          sml.MailContent("不工作的服务器IP是:" + m_servlet[order]+"\n\t"+"出现异常时的时间是:"+Time[order]);
          sml.I_nternetaddress(a_ddress[i]);
          System.out.println(m_servlet[order]);
          sml.send();
        }
      }catch(Exception e){e.printStackTrace();}
    }
    void SendControl(int order){
      String center;
      send_control[order]++;
      if(send_control[order]<3)
        {
          SendMail(order);//调用发邮件程序
        }
        else
          send_control[order] = 3;
    }
    public void Count1(int order,String estate)
    {
        count[order]=estate;//n表示服务器的工作状态
        if(estate=="异常")
        {
          count1[order]++;
          System.out.println(count1[order]);

          if(count1[order]==5)
          {
            SendControl(order);
            count1[order]=0;//累加清零
          }
        }
        else{
          count1[order]=0;
          send_control[order]=0;
        }//如果被监控服务器正常累加清零
    }
    public void DateTime(int ss)
    {
      Calendar now=Calendar.getInstance();
      int year,month,date,hour,minute,second;
      year=now.get(Calendar.YEAR);
      month=now.get(Calendar.MONTH)+1;
      date=now.get(Calendar.DATE);
      hour=now.get(Calendar.HOUR_OF_DAY);
      minute=now.get(Calendar.MINUTE);
      second=now.get(Calendar.SECOND);
      Time[ss]=(year+"年"+month+"月"+date+"日"+hour+":"+minute+":"+second);
      System.out.println(Time[ss]);
    }
    public void Controls()
    {
        count=new String[20];
        count1=new int[20];
        send_control=new int[20];
        for(int i=0;i<20;i++)
          send_control[i]=0;
        String m_servletName;
        while(true)
        {
         for(int i=0;i<number;i++)
             {
              m_servletName=m_servlet[i];
              try{try {
                String url = m_servletName ;
                URL mapServer = new URL(url);
                URLConnection s = mapServer.openConnection();
                BufferedReader in = new BufferedReader(
                                       new InputStreamReader(
                                            s.getInputStream()));
                String inputLine;
                if((inputLine = in.readLine()) != null)
                {
                    Time[i]="";

                }
                in.close();
                Count1(i,"正常");//有字符返回置1表示正常
                }catch(Exception e)
                {
                  if(Time[i]=="")
                  {
                    DateTime(i);
                  }//判断服务器是否是刚刚不工作,如果不是保持时间不便

                   Count1(i,"异常");//无字符返回置0表示不正常
                 }
             pauseTime=1000;//间隔0.5S访问1次
             Thread.sleep(pauseTime);
          }catch(Exception e) {e.printStackTrace();}
        }
     }
   }
   void Set_address(String address)
  {
      int lengths = 0, strBegin = 0, num = 0;
      char add[] = new char[1000];
      lengths = address.length();
      address.getChars(0, lengths, add, 0); //将邮件地址字符串转化为字符数组
      for (int i = 0; i < lengths; i++) {
        if (add[i] == ';') {
          a_ddress[num] = new String(add, strBegin, i - strBegin); //将字符数组分解为邮件地址字符串数组
          strBegin = i + 1;
          num = num + 1;
        }
      }
      a_ddress[num] = new String(add, strBegin, lengths - strBegin);
      address_Number = num + 1; //邮件地址的数量
  }
  void SetURL(String geturl)
  {
      int lengths,strBegin=0,num=0;
      char urls[]=new char[1000];
      lengths=geturl.length();
      geturl.getChars(0,lengths,urls,0);//将服务器字符串转化为字符数组
      for(int i=0;i<lengths;i++)
      {
        if(urls[i]==';')
        {
           m_servlet[num]=new String(urls,strBegin,i-strBegin);//将字符数组分解为IP字符串
           strBegin=i+1;
           num++;
        }
      }
      m_servlet[num]=new String(urls,strBegin,lengths - strBegin);
      number=num+1;//服务器数量
  }
  public Mythread()
  {}
  public void run() {Controls();}
}

⌨️ 快捷键说明

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