从多个Windows服务中获取信息

时间:2013-03-25 11:16:32

标签: c# wcf windows-services monitoring nettcpbinding

* 如何从多个WINDOWS SERVICE消费信息*

  • 我有一台中央管理员机器和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;  
      }

2 个答案:

答案 0 :(得分:0)

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

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

祝你好运

答案 1 :(得分:0)

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

  • 我要创建一个Windows服务。
  • 添加一个侦听端口,您需要选择一个。
  • 设置接收和命令,GetData,GetIP,CutConnection 等
  • 也许是一个UDP端口,所以它可以响应那里的任何人 广播。
  • 你需要提出命令短语,
  • 并回复。我个人认为这是通用的,比如一个xml片段。

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

以比特攻击它,添加功能。不应该这么难,尽量尝试正确命名你的对象。我知道学术类型不会给出一些东西,但是当你尝试这个时,你会想到是否下载,获得速度,响应一个快速消息,发送一个快速消息并等待响应。获取它们以在UI中显示...

你攻击这个命令取决于你。 但要一点一点地学习它。 只是敲了一下什么都不做的Windows服务。 做一个点对点聊天应用程序来玩WCF。 写一个小命令解析器。

如果是我的第一件事,我会做的是客户端发送UDP广播,另一个回复它,然后建立一个带有响应者应用程序的机器列表。然后我将后者转变为服务,但重点是构建工作模块,然后将它们连接在一起。不要把一个名不起眼的晦涩功能混合在一起,然后试着让它发挥作用。

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

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