【问题标题】:How to make Things interact, when a server is online or offline当服务器在线或离线时,如何使事物交互
【发布时间】:2017-01-25 08:37:17
【问题描述】:

所以我对 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

【问题讨论】:

  • 这个问题太笼统了。但这里有一些提示你必须做的事情:1)学习如何画东西。尝试创建一个绘制鱼的应用程序 - 您可以在窗口中添加一个面板,然后在 Google 上搜索“c# winforms 如何在面板上绘制图像”之类的内容 2)您需要了解如何定期触发一些事件以及如何使用计时器,再次,谷歌是你的朋友。然后你可以在一个时间间隔内检查服务器并改变你绘制的内容
  • @SirBirne 我已经画了一些鱼,但不是关于鱼,而是关于我需要在我的代码中添加“服务器图像”的位置
  • 您可以创建类似服务器列表的内容。比您在每个服务器的绘图功能中绘制一条鱼 -> 如我的第一条评论中所述,尝试使用计时器定期检查服务器状态并根据您的结果重新绘制您的鱼。
  • 好的,谢谢,我会试试的

标签: c# ping


【解决方案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);
      }
 }

【讨论】:

  • 没问题,快乐编程:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-20
  • 2011-05-10
  • 2015-05-13
  • 1970-01-01
  • 2011-12-25
  • 1970-01-01
  • 2014-04-02
相关资源
最近更新 更多