51 lines
1.5 KiB
C#
51 lines
1.5 KiB
C#
using System;
|
|
using System.Diagnostics.Tracing;
|
|
using System.Net.NetworkInformation;
|
|
using System.Text;
|
|
|
|
namespace HSUCO_Server_Monitoring
|
|
{
|
|
public class StatusChecker
|
|
{
|
|
public StatusResult Check(string ip)
|
|
{
|
|
try
|
|
{
|
|
Ping ping = new Ping();
|
|
PingOptions options = new PingOptions();
|
|
options.DontFragment = true;
|
|
string data = "hsuco";
|
|
byte[] buffer = ASCIIEncoding.ASCII.GetBytes(data);
|
|
int timeout = 120;
|
|
const int repetCount = 5;
|
|
|
|
int successCount = 0;
|
|
for (int i = 0; i < repetCount; i++)
|
|
{
|
|
var reply = ping.Send(System.Net.IPAddress.Parse(ip), timeout, buffer, options);
|
|
if (reply.Status == IPStatus.Success)
|
|
{
|
|
successCount++;
|
|
}
|
|
|
|
}
|
|
int marginal = (int)(repetCount * 0.6);
|
|
if (successCount >= marginal)
|
|
{
|
|
return StatusResult.Success;
|
|
}
|
|
if (successCount == 0)
|
|
{
|
|
return StatusResult.Fail;
|
|
}
|
|
return StatusResult.Inspection;
|
|
}
|
|
catch(Exception ex)
|
|
{
|
|
Log.FATAL(ex.Message);
|
|
return StatusResult.Fail;
|
|
}
|
|
}
|
|
|
|
}
|
|
} |