如何用C#语言编程获取本地默认网关的IP和MAC地址!

解决方案 »

  1.   

    读取注册表里相应项的值:
    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\{16AA3431-43D5-46B8-A529-C6EF3EB4F2D5}\Parameters\Tcpip
      

  2.   

    获取本机的所有IP,子网掩码(subnet mask)和默认网关 添加对System.Management的引用using System.Management;//获取IP,子网掩码(subnet mask)和默认网关ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");ManagementObjectCollection nics = mc.GetInstances();foreach(ManagementObject nic in nics){if(Convert.ToBoolean(nic["ipEnabled"]) == true){Console.WriteLine((nic["IPAddress"] as String[])[0]);Console.WriteLine((nic["IPSubnet"] as String[])[0]);Console.WriteLine((nic["DefaultIPGateway"] as String[])[0]);}}
      

  3.   

    读取注册表里相应项的值:
    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\{16AA3431-43D5-46B8-A529-C6EF3EB4F2D5}\Parameters\Tcpip
      

  4.   

    To:ziyeping
    你说的方法里的三条语句
    Console.WriteLine((nic["IPAddress"] as String[])[0]);Console.WriteLine((nic["IPSubnet"] as String[])[0]);Console.WriteLine((nic["DefaultIPGateway"] as String[])[0]);分别能获取本机的IP,SUBNET和网关的IP,那么网关的MAC怎么获取呢?
      

  5.   

    [DllImport("Iphlpapi.dll")]   
    private   static   extern   int   SendARP(Int32   dest,Int32   host,ref   Int64   mac,ref   Int32   length);   
    [DllImport("Ws2_32.dll")]     
    private   static   extern   Int32   inet_addr(string   ip);   
        
    ///     
    ///   根据ip得到网卡mac地址   
    ///     
    ///   给出的ip地址   
    ///   对应ip的网卡mac地址   
    public   static   Int64   GetMACByIP(string   ip)     
    {     
    Int32   ldest=   inet_addr(ip);   //目的地的ip     
    try     
    {     
    Int64   macinfo   =   new   Int64();     
    Int32   len   =   6;     
    int   res   =   SendARP(ldest,0,   ref   macinfo,   ref   len);     
    return   macinfo;     
    }     
    catch(Exception   err)     
    {     
    Console.WriteLine("Error:{0}",err.Message);     
    }     
    return   0;     
    }     添加:using   System.Runtime.InteropServices;
    可以取得
      

  6.   

    使用WMI函数调用的方法可以获取网关的MAC吗?
      

  7.   

    ProcessStartInfo psi = new ProcessStartInfo("arp.exe", "-a 157.60.150.1");
                psi.RedirectStandardOutput = true;
                psi.UseShellExecute = false;
                Process p = Process.Start(psi);
                string output = p.StandardOutput.ReadToEnd();
                Console.WriteLine(Regex.Match(output, @"([0-9A-F]{2}-){5}[0-9A-F]{2}").Value);
    已经网关调用arp获得物理地址
      

  8.   

    ManagementObjectSearcher query = new ManagementObjectSearcher("Select * from Win32_NetWorkAdapterConfiguration where IPEnabled='TRUE'");
    ManagementObjectCollection queryCollection = query.Get();foreach (ManagementObject mo in queryCollection)
    {            
           strMac=mo["MACAddress"].ToString();\\获得本机的MAC
     }
      

  9.   

    #region 获取计算机信息
    private void GetComputerInfo(out string hostname,out string mac)
    {
    hostname = Dns.GetHostName(); ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); 
    ManagementObjectCollection moc = mc.GetInstances(); 

    mac = "";
    foreach(ManagementObject mo in moc) 
    {
    if((bool)mo["IPEnabled"]) 
    {
    mac += mo["MacAddress"].ToString().Replace(":","-");
    }
    mo.Dispose();
    }
    }
    #endregion
      

  10.   

    //根据IP获得MAC地址
    private string GetMac(string ip)
            {
                string str1=string.Empty;
                string str2=string.Empty;            ProcessStartInfo info1 = new ProcessStartInfo();
                Process process1 = new Process();            info1.FileName = " nbtstat ";
                info1.RedirectStandardInput = false;
                info1.RedirectStandardOutput = true;
                info1.Arguments = " -A " + ip;
                info1.UseShellExecute = false;
                process1 = Process.Start(info1);                str2 = process1.StandardOutput.ReadToEnd();
                   int num1 = str2.Trim().ToLower().IndexOf("mac address", 0);
                    if (num1 < -1)
                        return str1;
                    else
                    {
                        process1.WaitForExit();
                        str1 = str2.Substring(num1+20, 17);
                    }
                return str1;
            }
      

  11.   

    #region 根据IP获得MAC地址
            /// <summary>
            /// 获得一般地址MAC(测试不能获得网关MAC) 
            /// </summary>
            /// <param name="ip"></param>
            /// <returns></returns>
            private string GetMac(string ip)
            {
                string str1=string.Empty;
                string str2=string.Empty;            ProcessStartInfo info1 = new ProcessStartInfo();
                Process process1 = new Process();            info1.FileName = " nbtstat ";
                info1.RedirectStandardInput = false;
                info1.RedirectStandardOutput = true;
                info1.Arguments = " -A " + ip;
                info1.UseShellExecute = false;
                process1 = Process.Start(info1);            str2 = process1.StandardOutput.ReadToEnd();
                str1 = Regex.Match(str2.ToUpper(), @"([0-9A-F]{2}-){5}[0-9A-F]{2}").Value;            return str1;
            }        /// <summary>
            /// 测试获得网关MAC,不能获得一般MAC
            /// </summary>
            /// <param name="ip"></param>
            /// <returns></returns>
            private string GetMacs(string ip)
            {
                string str1 = string.Empty;
                string str2 = string.Empty;            ProcessStartInfo info1 = new ProcessStartInfo();
                Process process1 = new Process();            info1.FileName = " arp ";
                info1.RedirectStandardInput = false;
                info1.RedirectStandardOutput = true;
                info1.Arguments = " -a " + ip;
                info1.UseShellExecute = false;
                process1 = Process.Start(info1);            str2 = process1.StandardOutput.ReadToEnd();
                str1 = Regex.Match(str2.ToUpper(), @"([0-9A-F]{2}-){5}[0-9A-F]{2}").Value;            return str1;
            }
            #endregion
      

  12.   

    TO lsj_zrp() :
    你的程序我没有编译成功呀,你试过吗?
      

  13.   

    就没有用asp.net 的代码吗??/ 如果要取得外部ip地址。。该怎么写呢??你们取得都是本机的ip。。