1

*如何使用来自多个 WINDOWS 服务的信息 *

  • 我有一台中央管理员机器和 40 台其他类似客户端的行为,我需要做的是
    1-在每个客户端的机器上安装 Windows 服务以获取他们的信息*

    • : IP地址
    • : MAC地址
    • : 主机名
    • :上传速率(用于互联网连接)
    • : 下载速率(互联网连接)

    2-能力:

    • :切断连接
    • :限制带宽

PS:这是我去年的项目,所以解决它非常重要,我想


我做了什么 :

 public string         addip ()           
         {
             var hostEntry = Dns.GetHostEntry(Dns.GetHostName());
             string x =(from addr in hostEntry.AddressList where addr.AddressFamily.ToString() == "InterNetwork" select addr.ToString()).FirstOrDefault() ;

             return x; 
         }
    public string         hostname ()        
          {
             string x = System.Net.Dns.GetHostName() ;

             return x;  
          }
    public string         downlo ()          
          {
              List<NetworkInterface> nics = NetworkInterface.GetAllNetworkInterfaces().Where(network => network.NetworkInterfaceType == NetworkInterfaceType.Ethernet).ToList();
              NetworkInterface nic = nics[0];
              IPv4InterfaceStatistics interfaceStats = nic.GetIPv4Statistics();
              int bytesReceivedSpeed = (int)(interfaceStats.BytesReceived - double.Parse(BytesReceived)) / 1024;
              BytesReceived = interfaceStats.BytesReceived.ToString();
              string x = (bytesReceivedSpeed.ToString() + " KB/s") ;

           return x;   
         }
    public string         uplo ()            
      {
              List<NetworkInterface> nics = NetworkInterface.GetAllNetworkInterfaces().Where(network => network.NetworkInterfaceType == NetworkInterfaceType.Ethernet).ToList();
              NetworkInterface nic = nics[0];
              IPv4InterfaceStatistics interfaceStats = nic.GetIPv4Statistics();
              int bytesSentSpeed = (int)(interfaceStats.BytesSent - double.Parse(BytesSent)) / 1024;
              BytesSent = interfaceStats.BytesSent.ToString();
              string x = (bytesSentSpeed.ToString()+ " KB/s") ;

              return x;  
      }
4

2 回答 2

0

仍然是一个重要的问题。如果是我这样做。

  • 我会创建一个 Windows 服务。
  • 添加一个侦听端口,您需要选择一个。
  • 设置它接收和接收命令、GetData、GetIP、CutConnection 等。
  • 也许还有一个 UDP 端口,因此它可以响应那里的任何人广播。
  • 你需要想出命令短语,
  • 和回应。就我个人而言,我会说它是通用的,比如一个 xml 片段。

    然后我会写一个点头应用来证明这一点。并尝试选择您的 40 台机器、不同的 Windows 版本、网络的不同部分等。然后我将开始在监视器/控制器上工作。

一点一点地攻击它,添加功能。这不应该那么难,尽管尝试正确命名您的对象。我知道学术类型不会提供任何东西,但是当您尝试这样做并迷失是否下载时,您会迷失方向,获取速度,响应 getspeed 消息,发送 getspeed 消息并等待响应。让它们显示在 UI 中...

你攻击这个的顺序取决于你。但是一点一点的学习。只需敲开一个什么都不做的windows服务。做一个点对点聊天应用程序来玩 WCF。编写一个小命令解析器。

如果是我,我会做的第一件事是客户端发送一个 UDP 广播,另一个响应它,然后建立一个带有响应程序应用程序的机器列表。然后我会将后者变成服务,但重点是构建工作模块,然后将它们连接在一起。不要将名称错误的晦涩函数混杂在一起,然后尝试使其正常工作。

保持简单开始。例如,您可以使用线程和并行化。提示先让它工作。您不需要 WCF 或服务来执行此操作。那将是废话。但是由调度程序启动的一个小 exe,读取和写入共享,就可以完成这项工作。

构建模块,证明它们。编写 noddy 服务和应用程序,只是建立一个机器列表,响应端口上的消息会教你很多东西。

于 2013-03-26T02:09:47.743 回答
0

我认为您需要查看此链接→ https://fr.wikipedia.org/wiki/Simple_Network_Management_Protocol

这是一个监控应用程序吗?如果是这样,为什么您不只是基于开源项目(例如 Nagios Core,它基于 C → http://www.nagios.org/download/core/thanks?t=1364211633)编写您的应用程序

祝你好运

于 2013-03-25T11:42:05.067 回答