1

* MULTIPLE WINDOWS サービスから情報を取得する方法 *

  • 私は中央の管理者マシンとクライアントのような 40 の他の行為を持っており、私がする必要があることは次のとおり
    です。

    • : 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

このリンクを見てみる必要があると思います → https://fr.wikipedia.org/wiki/Simple_Network_Management_Protocol

これは監視アプリケーションですか?? もしそうなら、オープンソースプロジェクトに基づいてアプリをコーディングしないのはなぜですか (たとえば、C に基づく Nagios Core → http://www.nagios.org/download/core/thanks?t=1364211633 )

幸運を

于 2013-03-25T11:42:05.067 に答える
0

それでも重要な質問です。もし私がこれをしていたら。

  • Windows サービスを作成します。
  • リスニング ポートを追加します。いずれかを選択する必要があります。
  • 受信とコマンド、GetData、GetIP、CutConnection などをセットアップします。
  • おそらくUDPポートも同様に、誰でもブロードキャストに応答できるようにします。
  • コマンド フレーズを考え出す必要があります。
  • そして応答。個人的には、xml スニペットと言って汎用的にします。

    次に、それを証明するためのうなずくアプリを作成します。そして、40台のマシン、さまざまなWindowsバージョン、ネットワークのさまざまな部分などを選択して試してみてください。それから、モニター/コントローラーで作業を開始します。

少しずつ攻撃し、機能を追加します。これはそれほど難しいことではありませんが、オブジェクトに適切な名前を付けてみてください。アカデミックなタイプが何も提供しないことは知っていますが、これを試してみると、ダウンロードするか、速度を取得するか、getspeed メッセージに応答するか、getspeed メッセージを送信して応答を待つかについて迷ってしまいます。それらを取得して UI に表示します...

どの順番で攻撃するかはあなた次第です。でも、少しずつ学んでください。何もしないWindowsサービスをノックアップするだけです。ピア ツー ピア チャット アプリを実行して、WCF を操作します。コマンドパーサーを少し書きます。

私だったら、まずクライアントが UDP ブロードキャストを送信し、別のクライアントがそれに応答して、レスポンダー アプリがインストールされたマシンのリストを作成します。次に、後者をサービスに変えますが、主なポイントは、動作するモジュールを構築し、それらを結合することです。誤った名前の不明瞭な関数の不安定なごちゃまぜを結合してから、それを機能させようとしないでください。

最初はシンプルにしてください。たとえば、スレッド化と並列化を使用できます。ヒント 最初に機能させます。これを行うために WCF やサービスは必要ありません。それはがらくたでしょう。しかし、スケジューラによって開始された、共有への読み取りと書き込みを行う小さなexeが仕事をします。

モジュールを構築し、それらを証明します。ポート上のメッセージに応答するマシンのリストを作成するだけで、気の利いたサービスやアプリを作成すると、多くのことを学ぶことができます。

于 2013-03-26T02:09:47.743 に答える