随笔 - 432  文章 - 0  评论 - 15  阅读 - 63万

C#获取IP及MAC地址 方法

C#获取IP及MAC地址 方法,比较齐全

 

复制代码
using System.Net;
using System;
using System.Management;
using System.Runtime.InteropServices;

public class getIP
{
    [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

    public string getLocalIP()
    {
        string strHostName = Dns.GetHostName(); //得到本机的主机名

        IPHostEntry ipEntry = Dns.GetHostByName(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.GetHostByName(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 localIP, string remoteIP)
    {
        Int32 ldest = inet_addr(remoteIP); //目的ip 

        Int32 lhost = inet_addr(localIP); //本地ip


        try
        {
            Int64 macinfo = new Int64();
            Int32 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("scmobile-tj2");
        for (int i = 0; i < TEMP.LENGTH; I++)
        {
            Console.WriteLine(temp[i]);
        }
        Console.WriteLine(gi.getRemoteMac("192.168.0.3", "192.168.0.1"));
    }
}
复制代码

 

posted on   狼来了  阅读(6072)  评论(0编辑  收藏  举报
编辑推荐:
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示