2017-05-16 19 views
0

私はアプリケーションを作っています。その機能の1つでは、私のネットワークのIPアドレスを取得する必要があります。arpからのIPアドレスのみを取得する

ping 192.168.1.255 & arp-aは、表の形式で、私は必要なすべてのIPアドレスが一覧表示されます:今、私は何を知っていないことができる方法である

private void button_Click(object sender, EventArgs e) 
     { 

       string strCmdText3; 
       strCmdText3 = "/c ping 192.168.1.255 & arp -a"; 

       Process process = new Process(); 
       process.StartInfo.FileName = "cmd.exe"; 
       process.StartInfo.Arguments = strCmdText3; 
       process.StartInfo.UseShellExecute = false; 
       process.StartInfo.RedirectStandardOutput = true; 
       process.StartInfo.RedirectStandardError = true; 
       process.StartInfo.CreateNoWindow = true; 
       process.Start(); 
       //* Read the output (or the error) 
       string output = process.StandardOutput.ReadToEnd(); 
       //Console.WriteLine(output); 
       //string err = process.StandardError.ReadToEnd(); 
       //Console.WriteLine(err); 
       process.WaitForExit(); 

       show.Text = output; 
      } 

:そのため

Internet Address  Physical Address  Type 

    192.168.x.x   xx-xx-xx-xx-xx-xx  dynamic 
    192.168.x.x   xx-xx-xx-xx-xx-xx  dynamic 

コードは次のようなものです私はIPアドレスだけを(配列や何かに)置くので、後で別のコマンドに使うことができます。

、これはどのようにアウトPINGコマンドを削除

"\r\nPinging 192.168.1.255 with 32 bytes of data:\r\nRequest timed out.\r\nRequest timed out.\r\nRequest timed out.\r\nRequest timed out.\r\n\r\nPing statistics for 192.168.1.255:\r\n Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),\r\n\r\nInterface: 10.10.10.74 --- 0x7\r\n Internet Address  Physical Address  Type\r\n 10.10.80.1   10-da-43-72-3a-99  dynamic \r\n 10.10.80.335   00-e0-4c-c7-44-0c  dynamic \r\n 10.10.80.290   e0-ac-cb-60-88-c4  dynamic \r\n 10.10.80.25   34-02-86-a0-79-72  dynamic \r\n 10.10.80.27   00-1c-c0-8a-59-e7  dynamic \r\n 
+0

'string output'変数の正確な例はheplfulです。 – pijemcolu

答えて

0
  • だろう、あなたはに戻って追加することもできますが、より多くの行が、後にスキップします。
  • 分割文字列に返されたテキスト[]改行文字に
  • グラブや文字に各行の3-18をトリムし、一覧に

を入れてほとんどの部分についてはほとんど必要がありましたここには更新されたコードがあります。

static void Main() { 
    string strCmdText3; 
    strCmdText3 = "/c arp -a"; 

    Process process = new Process(); 
    process.StartInfo.FileName = "cmd.exe"; 
    process.StartInfo.Arguments = strCmdText3; 
    process.StartInfo.UseShellExecute = false; 
    process.StartInfo.RedirectStandardOutput = true; 
    process.StartInfo.RedirectStandardError = true; 
    process.StartInfo.CreateNoWindow = true; 
    process.Start(); 
    //* Read the output (or the error) 
    string output = process.StandardOutput.ReadToEnd(); 
    //Console.WriteLine(output); 
    //string err = process.StandardError.ReadToEnd(); 
    //Console.WriteLine(err); 
    process.WaitForExit(); 

    //show.Text = output; 

    string[] LinesReturned = output.Split('\n'); 
    List<string> ipAddresses = new List<string>(); 
    for (int i = 3; i < LinesReturned .GetUpperBound(0); i++) { 
    ipAddresses.Add(LinesReturned [i].Substring(2, 15).Trim()); 
} 
+0

ニース、ありがとう! – Alexander

関連する問題