所以我对c#非常新,有人让我让他成为一个Windows窗体应用程序,你可以看到,他们的服务器是在线还是离线。他想让我做一个鱼缸(服务器)游泳的水族馆,当他们在线时,当他们离线时,他们只是躺在水面上。但我不知道,谁将鱼类纳入我的代码:
private static bool IsServer1Up(string hostName)
{
bool retVal = false;
try
{
Ping pingSender = new Ping();
PingOptions options = new PingOptions();
options.DontFragment = true;
string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
byte[] buffer = Encoding.ASCII.GetBytes(data);
int timeout = 120;
PingReply reply = pingSender.Send(hostName, timeout, buffer, options);
if (reply.Status == IPStatus.Success)
{
retVal = true;
}
}
catch (Exception ex)
{
retVal = false;
}
return retVal;
}
这就是我的想法。如果你能为我提供非常好的话
PS:对不起,如果我拼错了或有很多语法错误,我11岁,来自德国:D
答案 0 :(得分:1)
我试着让你走上正确的道路。
首先,您需要一个代表您的服务器的类。这可能看起来像这样:
class Server
{
public string HostName { get; private set; }
public bool IsOnline { get; private set; }
public Server(string hostName)
{
HostName = hostName;
}
public bool CheckState()
{
IsOnline = YourLogicForChecking(HostName);
return IsOnline;
}
}
在您的应用程序中,您需要初始化所有服务器的集合。假设你知道如何画你的鱼,你可以实现一个类似的方法。
public void DrawFish(Server s)
{
/* your drawing logic, if server is offline the fish is dead, else it is alive */
}
然后你应该使用一个更新服务器状态的计时器,并调用每个服务器的绘图功能。以下是您的表单的示例。
public MainForm()
{
InitializeComponent();
Servers = LoadAllServers();
timer.Interval = 1000;
timer.Start();
timer.Tick += Timer_Tick;
}
public void Timer_Tick(object sender, EventArgs e)
{
foreach(var s in Servers)
{
s.CheckState();
DrawFish(s);
}
}