You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
3.4 KiB
105 lines
3.4 KiB
4 years ago
|
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;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|