using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; namespace DllEapFileUpload { public class ArpTool { /// /// 获取ARP查询字符串 /// /// private static string GetARPResult() { Process p = null; string output = string.Empty; try { p = Process.Start(new ProcessStartInfo("arp", "-a") { CreateNoWindow = true, UseShellExecute = false, RedirectStandardOutput = true }); output = p.StandardOutput.ReadToEnd(); } catch (Exception ex) { //throw new Exception("IPInfo: Error Retrieving 'arp -a' Results", ex); LogBLL.Err("IPInfo: Error Retrieving 'arp -a' Results", ex); } finally { if (p != null) { p.Close(); } } return output; } /// /// 获取IP地址与Mac地址对应数据表 /// /// Mac-IP public static List GetIPInfo() { try { var list = new List(); foreach (var arp in GetARPResult().Split(new char[] { '\n', '\r' })) { if (!string.IsNullOrEmpty(arp)) { var pieces = (from piece in arp.Split(new char[] { ' ', '\t' }) where !string.IsNullOrEmpty(piece) select piece).ToArray(); if (pieces.Length == 3) { //pieces[1]Mac //pieces[0]IP list.Add(new string[2] { pieces[1], pieces[0] }); } } } return list; } catch (Exception ex) { LogBLL.Err("IPInfo: Error Retrieving 'arp -a' Results", ex); return null; //throw new Exception("IPInfo: Error Parsing 'arp -a' results", ex); } } /// /// Mac地址转换为IP地址 /// /// IP /// public static string GetIpFromMac(string str) { //str = str.Trim().ToString().Replace(":", "-"); List getipinfo = GetIPInfo(); string ipinfo = (from ip in getipinfo where ip[1].ToLowerInvariant() == str.ToLowerInvariant() select ip[0]).FirstOrDefault(); if (string.IsNullOrEmpty(ipinfo)) { return ""; } else { return ipinfo.ToUpperInvariant(); } } } }