Files
2023-03-14 17:30:09 +09:00

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;
}
}
}
}