<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      發布一款域名監控小工具——Domain(IP)Watcher

        域名是否正常,網站是否可以正常訪問是很頭痛的問題,怎樣簡單地監控域名是否可以正常訪問呢,這里發布一款域名監控小工具:Domain(IP)Watcher

      功能:

        監控給定的域名,一旦域名連續30秒(這是默認值,可以在源碼中修改)無法Ping通,立刻發郵件到指定郵箱,并發短信給站長

      效果圖:  

      正常情況

      異常情況

      郵件

      短信

      原理:

        用后臺線程循環每隔5秒鐘Ping結定的域名,如果連接5次Ping不通則發送郵件到給定郵箱。發短信是通過其他途徑實現的,現在最常用的有兩種方式:

        一是利用QQ郵箱的手機綁定功能實現收到郵件短信提示

        二是用www.ifttt.com提供的gmail跟sms服務實現收到郵件發短信提示

        本工具用的是第一種。

      主要程序:

        主要是后臺線程ping域名的應用,界面上顯示記錄的是一個richtextbox控件,其他幾個就不說了,代碼如下:

        窗體后臺程序:

       1     public partial class FormMain : Form, IFormWorkThread
      2 {
      3 private delegate void ControlDelegate(string record);
      4 private WorkThread wtObj;
      5 ControlDelegate cdObj;
      6
      7 public FormMain()
      8 {
      9 InitializeComponent();
      10 cdObj = SetRecord;
      11 }
      12
      13 private void FormMain_Load(object sender, EventArgs e)
      14 {
      15 }
      16
      17 private void btnBegin_Click(object sender, EventArgs e)
      18 {
      19 if (txtDomain.Text.Trim() == "")
      20 {
      21 MessageBox.Show("Domain(IP) can not be empty!");
      22 return;
      23 }
      24 if (txtEmail.Text.Trim() == "")
      25 {
      26 MessageBox.Show("Email address can not be empty!");
      27 return;
      28 }
      29 Regex regex = new Regex(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");
      30 if (!regex.IsMatch(txtEmail.Text.Trim()))
      31 {
      32 MessageBox.Show("Email address error!");
      33 return;
      34 }
      35 wtObj = new WorkThread(this, 0, 3, txtDomain.Text.Trim(), txtEmail.Text.Trim());
      36 wtObj.StartShowResult();
      37 }
      38
      39 private void SetRecord(string record)
      40 {
      41 rtxtRecord.AppendText(record);
      42 if (rtxtRecord.Lines.Length > 5 * 60 * 24 * 7)
      43 {
      44 rtxtRecord.Clear();
      45 }
      46 }
      47
      48 public void ShowResult(string record)
      49 {
      50
      51 if (rtxtRecord.InvokeRequired)
      52 {
      53 Invoke(cdObj, record);
      54 }
      55 else
      56 {
      57 SetRecord(record);
      58 }
      59 }
      60
      61 private void btnEnd_Click(object sender, EventArgs e)
      62 {
      63 if (wtObj != null)
      64 {
      65 wtObj.EndShowResult();
      66 }
      67 }
      68
      69 private void FormMain_FormClosing(object sender, FormClosingEventArgs e)
      70 {
      71 if (wtObj != null)
      72 {
      73 wtObj.EndShowResult();
      74 }
      75 }
      76
      77 private void tslblName_Click(object sender, EventArgs e)
      78 {
      79 OpenMyBlog();
      80 }
      81
      82 private void OpenMyBlog()
      83 {
      84 var Info = new System.Diagnostics.ProcessStartInfo("http://artwl.cnblogs.com");
      85 System.Diagnostics.Process.Start(Info);
      86 }
      87 }
      IFormWorkThread接口:
      1     public interface IFormWorkThread
      2 {
      3 void ShowResult(string record);
      4 }
      WorkThread代碼:
       1     public class WorkThread
      2 {
      3 private IFormWorkThread _formWorkThread;
      4 private Thread thread;
      5 private int count = 0, maxcount = 5;
      6 private string domain = "";
      7 private string emailaddress = "";
      8
      9 public WorkThread(IFormWorkThread formWorkThread,int count,int maxcount,string domain,string email)
      10 {
      11 this.count = count;
      12 this.maxcount = maxcount;
      13 this.domain = domain;
      14 this.emailaddress = email;
      15 _formWorkThread = formWorkThread;
      16 }
      17
      18 private string Ping(string domainname)
      19 {
      20 Ping ping = new Ping();
      21 PingReply pr = ping.Send(domainname);
      22 if (pr.Status == IPStatus.Success)
      23 {
      24 count = count > 0 ? count - 1 : 0;
      25 }
      26 else
      27 {
      28 count++;
      29 if (count > maxcount)
      30 {
      31 EmailHelp.SendEmail(emailaddress,
      32 string.Format("【 {0} 】不能訪問啦!",domainname),
      33 string.Format("【 {0} 】不能訪問啦!<br/><br/>【時間】{1}<br/><br/>【Ping】當前ping的結果為:{2}", domainname,DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), pr.Status),
      34 true);
      35 count = 0;
      36 }
      37 }
      38 return "【Time】:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\t【Domain】:" + domainname + "\t【Status】:" + pr.Status.ToString() + "\t【RoundtripTime】:" + pr.RoundtripTime.ToString() + "\n";
      39 }
      40
      41 public void Deal()
      42 {
      43 while (true)
      44 {
      45 Thread.Sleep(5000);
      46 string result = Ping(domain);
      47 _formWorkThread.ShowResult(result);
      48 }
      49 }
      50
      51 public void StartShowResult()
      52 {
      53 thread = new Thread(new ThreadStart(Deal));
      54 thread.Name = "TimeThread";
      55 thread.Start();
      56 }
      57
      58 public void EndShowResult()
      59 {
      60 thread.Abort();
      61 }
      62 }
      發郵件代碼:
       1     public class EmailHelp
      2 {
      3 public static void SendEmail(string[] emailAddress, string subject, string body, bool ishtml)
      4 {
      5 MailMessage msg = new MailMessage();
      6 foreach (string o in emailAddress)
      7 {
      8 msg.To.Add(o);
      9 }
      10
      11 msg.Subject = subject;//郵件標題
      12 msg.Body = body;//郵件內容
      13 msg.IsBodyHtml = ishtml;//是否是HTML郵件
      14
      15 Thread sendemail = new Thread(SendReplyEmail);
      16 sendemail.Start(msg);
      17 }
      18
      19 public static void SendEmail(string to, string subject, string body, bool ishtml)
      20 {
      21 SendEmail(new string[] { to }, subject, body, ishtml);
      22 }
      23
      24 private static void SendEmail(MailMessage mailMessage)
      25 {
      26 mailMessage.From = new MailAddress("emailaddress", "網站檢測郵件", System.Text.Encoding.UTF8);
      27 mailMessage.SubjectEncoding = System.Text.Encoding.UTF8;//郵件標題編碼
      28 mailMessage.BodyEncoding = System.Text.Encoding.UTF8;//郵件內容編碼
      29 mailMessage.Priority = MailPriority.Normal;//郵件優先級
      30 SmtpClient client = new SmtpClient();
      31
      32 //注冊的郵箱和密碼
      33 client.Credentials = new System.Net.NetworkCredential("emailaddress", "password");
      34 client.Port = 25;
      35 client.Host = "smtp.qq.com";
      36 client.EnableSsl = false;
      37 try
      38 {
      39 client.Send(mailMessage);
      40 }
      41 catch (System.Net.Mail.SmtpException ex)
      42 {
      43 //log.Error(ex.Message);
      44 }
      45 }
      46
      47 private static void SendReplyEmail(object model)
      48 {
      49 SendEmail((MailMessage)model);
      50 }
      51 }
      注:發郵件的代碼中emailaddress跟password要換成你自己的郵件地址跟密碼。另外下載的exe文件為保證可用,我用的郵箱地址跟密碼沒有去掉,請大家也不要反編譯后查看(這只是一個coding時的測試郵箱,沒什么價值,賺不到錢的)。
      工具下載地址:
        https://files.cnblogs.com/artwl/Domain(IP)Watcher.zip(至少要安裝.net Framework 2.0)
      posted @ 2011-11-15 00:36  artwl  閱讀(12053)  評論(21)    收藏  舉報

      個人簡介

      var ME = {
      	"name": "土豆/Artwl",
      	"job": "coding",
      	"languages": [
      		"JS", "HTML",
                      "CSS", "jQuery"
      		"MVC",".NET",
      		"設計模式"
      	],
      	"hobby": [
      		"閱讀", "旅游",
      		"音樂", "電影"
      	]
      }
      
      TOP
      主站蜘蛛池模板: 无码成人午夜在线观看| 国产成人欧美一区二区三区在线| 日韩视频一区二区三区视频| AV毛片无码中文字幕不卡| 欧美成人午夜在线观看视频| 色综合天天综合网中文伊| 亚洲国产精品日韩专区av | 国产女人在线视频| 国产日产亚洲系列av| 妓女妓女一区二区三区在线观看 | 她也色tayese在线视频| 精品日韩亚洲av无码| 亚洲一区二区av免费| 亚洲中文精品久久久久久不卡 | 九九热视频在线观看一区| 人人入人人爱| 国产成人一区二区三区在线| 国产精品综合色区在线观| 精品国产性色av网站| 欧美性群另类交| 国产成人精品2021欧美日韩| 天天综合色一区二区三区| 中文字幕国产在线精品| 啪啪av一区二区三区| 国产在线观看码高清视频| 国产精品亚洲二区在线播放| 亚洲电影天堂av2017| 亚洲中文字幕日产无码成人片| 久久er99热精品一区二区| av亚洲在线一区二区| 亚洲高潮喷水无码AV电影| 亚洲丶国产丶欧美一区二区三区| av偷拍亚洲一区二区三区| 亚洲中文字幕一二三四区| 欧美亚洲另类自拍偷在线拍| 国产精品久久久久久久久久直播| 精品国产一区二区在线视| 国产av剧情md精品麻豆| 成人精品自拍视频免费看| 国产中文三级全黄| 无码天堂va亚洲va在线va|