using System; using System.IO; using System.Runtime.InteropServices; using System.Text; namespace AutoFileCopyNet { public class Monitoring { [DllImport("wininet.dll")] private extern static bool InternetGetConnectedState(out int connectionDescription, int reservedValue); private string IPAddress = null; private System.Timers.Timer aTimer = new System.Timers.Timer(); private static int PingTime; private static string constatus; public void init() { aTimer.Interval = 1000; aTimer.Elapsed += new System.Timers.ElapsedEventHandler(OnTimer); aTimer.Enabled = true; } //计时器事件 private void OnTimer(object sender, System.Timers.ElapsedEventArgs e) { if (!IsConnected()) { WriteLog(0); } else { string Result = PingResult(IPAddress); if (Result != "Success") { WriteLog(1); } } } //检测本机是否连接到互联网 private bool IsConnected() { int I = 0; bool state = InternetGetConnectedState(out I, 0); return state; } int i = 0; //Ping IP地址, 返回TTL值. private string PingResult(string ip) { System.Net.NetworkInformation.Ping p = new System.Net.NetworkInformation.Ping(); System.Net.NetworkInformation.PingOptions options = new System.Net.NetworkInformation.PingOptions(); options.DontFragment = true; string data = "12345678901234567890123456789012"; byte[] buffer = Encoding.ASCII.GetBytes(data); int timeout = 1000; System.Net.NetworkInformation.PingReply reply = p.Send(ip, timeout, buffer, options); PingTime = int.Parse(reply.RoundtripTime.ToString()); constatus = reply.Status.ToString() + i.ToString(); i++; return reply.Status.ToString(); } private void WriteLog(int arg) { using (FileStream fs = new FileStream(@"" + System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + IPAddress + ".txt", FileMode.OpenOrCreate, FileAccess.Write)) { StreamWriter m_streamWriter = new StreamWriter(fs); m_streamWriter.BaseStream.Seek(0, SeekOrigin.End); switch (arg) { case 0: m_streamWriter.WriteLine("NetWork Disconnection Time: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\n"); break; case 1: m_streamWriter.WriteLine("IPAddress Disconnection Time: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\n"); break; default: break; } m_streamWriter.Flush(); m_streamWriter.Close(); fs.Close(); } } public void TimesConsole() { if ("Enable" == "Enable") { if (!string.IsNullOrEmpty(IPAddress)) { aTimer.Enabled = true; } } else { aTimer.Enabled = false; } } } }