C# 获取局域网IP和MAC地址

C#获取本机MAC地址和IP C#获取本机MAC地址和IP演示实现代码添加两个命名空间,如果没有找到,可以在添加引用.net中勾选或外部添加 阅读详情
C#遍历局域网的几种方法及比较
2009-07-03 10:08

扫描局域网IP列表的几种方法
很多软件都有获知局域网在线计算机IP的功能,但是在.net怎么实现呢,有好多方法,
下面我给大家介绍几种,供大家参考。

1、微软社区上介绍了使用Active Directory 来遍历局域网
利用DirectoryEntry组件来查看网络
网址:http://www.microsoft.com/china/communITy/program/originalarticles/techdoc/DirectoryEntry.mspx
private void EnumComputers()
{
    using(DirectoryEntry root = new DirectoryEntry("WinNT:"))
    {
      foreach(DirectoryEntry domain in root.Children)
      {
        Console.WriteLine("Domain | WorkGroup: "+domain.Name);
        foreach(DirectoryEntry computer in domain.Children)
    {
     Console.WriteLine("Computer: "+computer.Name);
    }
   }
}
}

效果评价:速度慢,效率低,还有一个无效结果 Computer: Schema 使用的过程中注意虑掉。

2、利用Dns.GetHostByAddress和IPHostEntry遍历局域网

private void EnumComputers()
{
for (int i = 1; i <= 255; i++)
{
string scanIP = "192.168.0." + i.ToString();

IPAddress myScanIP = IPAddress.Parse(scanIP);

IPHostEntry myScanHost = null;

try
{
    myScanHost = Dns.GetHostByAddress(myScanIP);
}

catch
{
    continue;
}

if (myScanHost != null)
{
    Console.WriteLine(scanIP+"|"+myScanHost.HostName);
}
}
}

效果评价:效率低,速度慢,不是一般的慢。

3、使用System.Net.NetworkInformation.Ping来遍历局域网

private void EnumComputers()
{
try
{
   for (int i = 1; i <= 255; i++)
   {
     Ping myPing;
     myPing = new Ping();
     myPing.PingCompleted += new PingCompletedEventHandler(_myPing_PingCompleted);

     string pingIP = "192.168.0." + i.ToString();
     myPing.SendAsync(pingIP, 1000, null);
   }
}
catch
{
}
}

PRIVATE void _myPing_PingCompleted(object sender, PingCompletedEventArgs e)
{
if (e.Reply.Status == IPStatus.Success)
{
    Console.WriteLine(e.Reply.Address.ToString() + "|" + Dns.GetHostByAddress(IPAddress.Parse(e.Reply.Address.ToString())).HostName);
}

}

效果评价:速度快,效率高,如果只取在线的IP,不取计算机名,速度会更快。
需要注意的是取计算机名称如果用Dns.GetHostByAddress取计算机名称,结果虽然正确,但VS2005会提示该方法已过时,但仍能使用。
如果用它推荐的替代方法Dns.GetHostEntry,则有个别计算机的名称会因超时而获得不到。

 

 获取局域网内的IP和MAC地址代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using System.Runtime.InteropServices;
using System.Net;
using System.Net.NetworkInformation;

namespace MacApp
{

    public partial class Form1 : Form
    {
        [DllImport("ws2_32.dll")]
        private static extern int inet_addr(string cp);
        [DllImport("IPHLPAPI.dll")]
        private static extern int SendARP(Int32 DestIP, Int32 SrcIP, ref Int64 pMacAddr, ref Int32 PhyAddrLen);
        public Form1()
        {
            InitializeComponent();
        }


        private void button1_Click(object sender, EventArgs e)
        {
            richTextBox1.Text = GetMacAddress(textBox1.Text);//获取远程IP(不能跨网段)的MAC地址
        }
        private string GetMacAddress(string hostip)//获取远程IP(不能跨网段)的MAC地址
        {
            string Mac = "";
            try
            {
                Int32 ldest = inet_addr(hostip); //将IP地址从 点数格式转换成无符号长整型
                Int64 macinfo = new Int64();
                Int32 len = 6;
                SendARP(ldest, 0, ref macinfo, ref len);
                string TmpMac = Convert.ToString(macinfo, 16).PadLeft(12, '0');//转换成16进制  注意有些没有十二位
                Mac = TmpMac.Substring(0, 2).ToUpper();//
                for (int i = 2; i < TmpMac.Length; i = i + 2)
                {
                    Mac = TmpMac.Substring(i, 2).ToUpper() + "-" + Mac;
                }
            }
            catch (Exception Mye)
            {
                Mac = "获取远程主机的MAC错误:" + Mye.Message;
            }
            return Mac;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            if (Dns.GetHostEntry(Dns.GetHostName()).AddressList.Length > 0)
            {
                textBox1.Text = Dns.GetHostEntry(Dns.GetHostName()).AddressList[0].ToString();//获取本机IP地址
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {

            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < 2; i++)
            {
                EnumComputers(i);
            }

        }

        private void EnumComputers(int n)
        {

            try
            {
                for (int i = 1; i <= 255; i++)
                {
                    Ping myPing;
                    myPing = new Ping();
                    myPing.PingCompleted += new PingCompletedEventHandler(myPing_PingCompleted);

                    string pingIP = "192.168." + n.ToString() + "." + i.ToString();
                    myPing.SendAsync(pingIP, 1000, null);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void myPing_PingCompleted(object sender, PingCompletedEventArgs e)
        {
            StringBuilder sb = new StringBuilder();

            if (e.Reply.Status == IPStatus.Success)
            {
                sb.Append("IP:" + e.Reply.Address.ToString() + "/r/n");
                string mac = GetMacAddress(e.Reply.Address.ToString());
                sb.Append("MAC:" + mac + "/r/n");

            }
            this.textBox2.Text += sb.ToString();
        }

    }
}

 

 

C#获取局域网内所有计算机的IP地址和MAC地址 C#实现获取局域网内所有计算机的IP地址和MAC地址的控制台应用程序源码 程序启动时首先获取本机的IP和MAC地址; 然后获取局域网内所有计算机的IP地址; 输入IP地址回车,获取该IP的MAC地址; 输入“STARTSCAN”回车,重新获取局域网内所有计算机的IP地址; 输入“ALLSCAN”回车,获取网段内所有IP(0-255)的MAC地址 代码见压缩包 立即下载

相关推荐

使用C#获取本地MAC地址

使用C#在线获取本地MAC地址,可以现在项目的登录用户,已经权限问题

C#中通过IP获取MAC地址,获取本机IP和MAC地址

  protected void Page_Load(object sender, EventArgs e)    {        Response.Write("MAC地址为:"+GetMACAddress()+"IP地址为:"+GetAddress()+"");        Response.Write("mac是:" + GetMACByIP("192.168.10.3")+"");        Response.Write("mac是:" + GetMACByIP(GetAddress()))

Queenie 4022

鱼眼相机去畸变(图像拉直/展开/矫正)算法及实战总结

1、算法说明经纬度矫正法, 可以把鱼眼图想象成半个地球, 然后将地球展开成地图,经纬度矫正法主要是利用几何原理, 对图像进行展开矫正。经过P点的入射光线没有透镜的话,本应交于相机成像平面的e点。然而,经过鱼眼相机的折射,光线会交于相机成像平面的d点,就产生了畸变,因此畸变图像整体上呈现出像素朝图像中心点聚集的态势。而去畸变,就是将折射到d点的点,重新映射回到e点,因此去畸变之后的图像与原始的鱼眼图像相比,仿佛是把向心聚集的像素又重新向四周铺展开来。AVM环视系统——鱼眼相机去畸变算法 - 知乎。

大胡子大叔的专栏 2万+

C#获取局域网IP、MAC地址和端口的初学

首先非常感谢Melou的http://www.cnblogs.com/luoht/archive/2009/12/18/1627431.html的随笔,对于初学C#的我,参考你的随笔对我的学习真是有莫大帮助。 C#遍历局域网的几种方法: 1、微软社区上介绍了使用Active Directory 来遍历局域网 首先我们来了解DirectoryEntry类是一个什么类。 命名空...

YDC15245929828的博客 995

Matlab实战:水声信号DEMON谱分析从入门到精通(附完整源码)

本文详细介绍了使用Matlab进行水声信号DEMON谱分析的完整流程,从基础理论到实战应用,涵盖信号预处理、包络提取、频谱分析等关键步骤,并附完整源码。特别针对水声通信中的低信噪比环境,提供了多种优化方案和性能提升技巧,帮助读者快速掌握这一水下目标检测的核心技术。

gamma的博客 295

(篇八)C语言在母串删子串、输入位置截取子串

文章目录一、字符串二、删除指定的字符三、从母串中截取子串四、输入位置截取子串 本篇主要介绍C语言字符串中的相关操作,然后分析两个C语言实例——在母串中指定删除子串、在母串中截取子串 一、字符串 了解C 语言的都知道,C语言中没有字符串类型,所以C语言是用字符串常量、字符指针、字符数组来表示字符串。这些字符串都是以 NULL、’\0’或者ASCII==0来结尾。说白了就是一个个字符组成一串有序序列,...

Viewinfinitely的博客 1510

C#获取局域网内所有的ip及对应的MAC

using System;using System.Collections;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Net;using System.Net.Sockets;using 

Without Me 4495

Qt6.8.0(win64)安装教程

启动 Visual Studio 2022 Community,选择 “继续但无需代码” 运行,然后打开Option设置,Add一条版本配置,Location 选择 D:\Qt\6.8.0\msvc2022_64\bin\qmake,点击确定。我是win11系统,所以选择windows版,下载路径二选一即可。方案1:默认情况下,额外勾选图中两个组件(总共40多G)方案2:按图中自定义勾选组件(总共5.8G)选择Custom Installation。我选的方案2,总共5.81G。

D4G1TIAO的博客 9065

java arp mac地址_使用ARP获取局域网内设备IP和MAC地址

usingSystem.Net;usingSystem;usingSystem.Management;usingSystem.Runtime.InteropServices;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Text.RegularExpressions;public classArpHelper{[DllIm...

weixin_36429702的博客 734

DBT关键切片重建算法

DBT通过有限角度(通常15°~50°)扫描,获取一系列低剂量投影图,重建出三维断层图像。传统FBP在稀疏角度下会产生严重的“伪影拖尾”和层间干扰。临床诊断中,放射科医生往往只关注几层关键切片(即病灶所在层),其余层仅作参考。

AI的内部世界的博客 89

YOLO26原创优化:SPPF优化 | 新一代高效可形变卷积DCNv4如何做二次创新?高效结合SPPF

如何跟YOLO26结合:1) SPPF高效结合

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 356

C获取局域网内所有计算机的IP地址和MAC地址:网络管理的好帮手

C#获取局域网内所有计算机的IP地址和MAC地址:网络管理的好帮手 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在现代网络管理中,监控和识别局域网内的设备是至关重要的。C#获取局域网内所有计算机的IP地址和MAC地址项目,正是为此而生。它是一个基于C#编写的控制台应用程序,能够高效地扫描局域网,获取每一台计算机的IP地址和MAC地址,为网络管理员提供极大的便利。 项...

gitblog_06736的博客 822

1. 在 SAP ABAP 事物码 SEGW 里创建 SAP OData 项目

本文介绍如何在 SAP ABAP 事物码 SEGW 里创建 SEGW 项目,使用工具生成 Runtime 运行时需要的资源。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 5435

C# 获取本地IP客户端IP地址以及MAC地址

--------------获得客户端IP /// <summary> /// 获取客户端IP /// </summary> /// <returns></returns> public static string GetClientIP() { ...

weixin_30908941的博客 194

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

用C#获取局域网内所有IP方法研究

用C#获取局域网内所有IP方法研究 (2011-05-19 13:10:29)转载 标签: 局域网 ip 分类: C# 一、微软推荐的DirectoryEntry方法 关键引用 using System.DirectoryServices; 核心代码: p

panyanyan的专栏 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

使用C#得到局域网内所有主机名,IP地址,MAC地址,使用C# 实现查看所有系统事件...

this.lstViewEventDetail.Items.Clear(); string selectedItem = this.lstBoxCtrlEventType.SelectedItem.ToString().Trim(); EventLog[] eventLogs = EventLog.GetEventLogs(); ...

weixin_30851867的博客 343

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C获取局域网内所有联网设备的IP地址和MAC地址

C#获取局域网内所有联网设备的IP地址和MAC地址 去发现同类优质开源项目:https://gitcode.com/ 此资源文件提供了一种使用C#编写的解决方案,用于获取局域网内所有联网设备的IP地址和MAC地址。通过该程序,用户可以方便地扫描并收集局域网内的网络设备信息,对于网络管理、设备监控等方面具有很高的实用价值。 功能特点 扫描并获取局域网内所有设备的IP地址和MAC地址。 支持自定义扫...

gitblog_06786的博客 459

C 获取局域网所有设备IP和MAC

C# 获取局域网所有设备IP和MAC 去发现同类优质开源项目:https://gitcode.com/ 此代码示例专门用于获取局域网内所有设备的IP地址和MAC地址,非常适合网络管理和设备监控。以下为代码的简要介绍: 标题:C# 获取局域网所有设备IP和MAC 描述:这个例子主要用于获取局域网络所有设备的IP和MAC,代码简单实用,欢迎大家下载实用。 功能特点 能够扫描并获取局域网内所有在线...

gitblog_06790的博客 419

求教C#使用(SnmpSharpNet.dll)Snmp协议,如何获取整个局域网段内的IP设备类型(例PC、路由器等)MAC和主机名?

请问如何C#使用(SnmpSharpNet.dll)Snmp协议,如何获取整个局域网段内的IP设备类型(例PC、路由器等)MAC和主机名?

zhangxuechun的专栏 2514

C#获取局域网MAC地址

效果: 说明:获取本局域网的MAC地址(非本机的MAC地址) 代码: /// <summary> /// 获取网卡物理地址 /// </summary> /// <returns></returns> public static string getMAC()...

aijiagui7454的博客 295

【转】C#得到局域网内所有主机名,IP地址,MAC地址

原文地址:C#得到局域网内所有主机名,IP地址,MAC地址作者:西西里の哈皮Kevi         private void btnCheck_Click(object sender, EventArgs e)         {             string ipAddress = this.cboBoxIp.Text.Trim();             Reg

zjwen2007的专栏 2612

利用IP,用C#来获得远程主机的MAC地址

 利用IP,用C#来获得远程主机的MAC地址 Posted on 2007-05-07 21:03 采飞扬 阅读(336) 评论(0)  编辑 收藏 <!--<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"xmlns:dc="http://purl.org/dc/elements/1.1/"xml

jevinmeng的专栏 669
上一篇: 华表控件 从数据库取公式表达式 显示cell结果
下一篇: winform安装项目、安装包的制作、部署
rubychen410
博客等级 码龄19年 32粉丝 95原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值