C#获取IP及MAC地址

发布时间:2021-10-08编辑:佚名阅读(2078)

using System.Net;
using System;
using System.Management;
using System.Runtime.InteropServices;
public class getIP
{
    [DllImport("Iphlpapi.dll")]
    private static extern int SendARP(int dest, int host, ref long mac, ref int length);
    [DllImport("Ws2_32.dll")]
    private static extern int inet_addr(string ip);
    //获取本机的IP
    public string getLocalIP()
    {
        string strHostName = Dns.GetHostName(); //得到本机的主机名
        IPHostEntry ipEntry = Dns.GetHostEntry(strHostName); //取得本机IP
        string strAddr = ipEntry.AddressList[0].ToString();
        return (strAddr);
    }
    //获取本机的MAC
    public string getLocalMac()
    {
        string mac = null;
        ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration");
        ManagementObjectCollection queryCollection = query.Get();
        foreach (ManagementObject mo in queryCollection)
        {
            if (mo["IPEnabled"].ToString() == "True")
                mac = mo["MacAddress"].ToString();
        }
        return (mac);
    }
    //获取远程主机IP
    public string[] getRemoteIP(string RemoteHostName)
    {
        IPHostEntry ipEntry = Dns.GetHostEntry(RemoteHostName);
        IPAddress[] IpAddr = ipEntry.AddressList;
        string[] strAddr = new string[IpAddr.Length];
        for (int i = 0; i < IpAddr.Length; i++)
        {
            strAddr[i] = IpAddr[i].ToString();
        }
        return (strAddr);
    }
    //获取远程主机MAC
    public string getRemoteMac(string remoteIP)
    {
        int ldest = inet_addr(remoteIP);
        try
        {
            long macinfo = 0;
            int len = 6;
            int res = SendARP(ldest, 0, ref macinfo, ref len);
            return Convert.ToString(macinfo, 16);
        }
        catch (Exception err)
        {
            Console.WriteLine("Error:{0}", err.Message);
        }
        return 0.ToString();
    }
    public static void Main(string[] args)
    {
        getIP gi = new getIP();
        Console.WriteLine("本地网卡信息:");
        Console.WriteLine(gi.getLocalIP() + " - " + gi.getLocalMac());
        Console.WriteLine("\n\r远程网卡信息:");
        string[] temp = gi.getRemoteIP("主机名");
        for (int i = 0; i < temp.Length; i++)
        {
            Console.WriteLine(temp[i]);
        }
        Console.WriteLine(gi.getRemoteMac("192.168.0.1"));
    }
}


  关键字:C#获取IPMAC地址


鼓掌

0

正能量

0

0

呵呵

0


评论区