课题_C# 获取局域网IP和MAC地址

课题_C# 获取局域网IP和MAC地址
课题_C# 获取局域网IP和MAC地址

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

C#遍历局域网的几种方法及比较,扫描局域网IP列表的几种方法

很多软件都有获知局域网在线计算机IP的功能,但是在.net怎么实现呢,有好多方法,

下面我给大家介绍几种,供大家参考。

1、微软社区上介绍了使用Active Directory 来遍历局域网

利用DirectoryEntry组件来查看网络

private void EnumComputers()

{

using(DirectoryEntry root = new DirectoryEntry("WinNT:"))

{

foreach(DirectoryEntry domain in root.Children)

{

Console.WriteLine("Domain | WorkGroup: "+https://www.360docs.net/doc/c914958163.html,);

foreach(DirectoryEntry computer in domain.Children)

{

Console.WriteLine("Computer: "+https://www.360docs.net/doc/c914958163.html,);

}

}

}

}

效果评价:速度慢,效率低,还有一个无效结果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、使用https://www.360docs.net/doc/c914958163.html,workInformation.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 https://www.360docs.net/doc/c914958163.html,ponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Runtime.InteropServices;

using https://www.360docs.net/doc/c914958163.html,;

using https://www.360docs.net/doc/c914958163.html,workInformation;

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地址

IPHostEntry IpEntry = Dns.GetHostEntry(Dns.GetHostName());

string myip = IpEntry.AddressList[0].ToString();

这样,如果没有安装IPV6协议,可以取得IP地址. 但是如果安装了IPV6,就取得的是IPV6的IP地址.

string myip = IpEntry.AddressList[1].ToString();

这样就在IPV6的情况下取得IPV4的IP地址.

但是,如果本机有很多块网卡, 如何得到IpEntry.AddressList[多少]才是本机的局网IPV4地址呢?

android获取Mac地址和IP地址

android获取Mac地址和IP地址 获取Mac地址实际项目中测试了如下几种方法: (1)设备开通Wifi连接,获取到网卡的MAC地址(但是不开通wifi,这种方法获取不到Mac 地址,这种方法也是网络上使用的最多的方法) //根据Wifi信息获取本地Mac public static String getLocalMacAddressFromWifiInfo(Context context){ WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); WifiInfo info = wifi.getConnectionInfo(); return info.getMacAddress(); } (2)调用Linux的busybox,通过linux命令来获取 //根据busybox获取本地Mac public static String getLocalMacAddressFromBusybox(){ String result = ""; String Mac = ""; result = callCmd("busybox ifconfig","HWaddr"); //如果返回的result == null,则说明网络不可取 if(result==null){ return "网络出错,请检查网络"; } //对该行数据进行解析 //例如:eth0 Link encap:Ethernet HWaddr 00:16:E8:3E:DF:67 if(result.length()>0 && result.contains("HWaddr")==true){ Mac = result.substring(result.indexOf("HWaddr")+6, result.length()-1); Log.i("test","Mac:"+Mac+" Mac.length: "+Mac.length()); /*if(Mac.length()>1){ Mac = Mac.replaceAll(" ", "");

通过客户端ip获取mac地址

public class MacUtils { /** * 通过ip获取mac地址 * @param ipAddress 客户端ip * @return mac地址 */ public static String getMACAddressByIp(String ipAddress) { String str = "", macAddress = ""; try { Process pp = Runtime.getRuntime().exec("arp -a " + ipAddress); InputStreamReader ir = new InputStreamReader(pp.getInputStream(), "gbk"); BufferedReader br = new BufferedReader(ir); while ((str = br.readLine()) != null) { if (str.indexOf(ipAddress) > 1) { str = str.trim(); macAddress = str.substring(str.indexOf(" "), str.length()); macAddress = macAddress.trim(); macAddress = macAddress.substring(0,17); break; } } pp.destroy(); br.close(); ir.close(); } catch (Exception ex) { return "Can't Get MAC Address!"; }

如何查看本机物理地址

如何查看本机物理地址 MAC地址和人的身份证一样,可以在设路由的时候绑定你的MAC地址。那么大家知道如何查看本机物理地址吗?今天小编与大家分享下查看本机物理地址的具体操作步骤,有需要的朋友不妨了解下。 查看本机物理地址方法一 1、按WIN+R键调出运行窗口 2、在窗口中输入:cmd 3、然后点击确定 4、在命令提示符里面输入:ipconfig /ALL 5、然后回车即可得到计算机的MAC地址。 查看本机物理地址方法二

1、进入网络连接里面后。 2、在本地连接上右键-----状态----详细信息。 查看本机物理地址图文教程 可通过这种办法确定自己的IP设置的正确性和获得本机网卡的物理地址(MAC地址),方法如下: 1、打开“开始”-“运行”-在弹出窗口中输入'cmd' -“确定” 2、在DOS窗口下输入ipconfig/all 显示如图,椭圆形区域,也就是Physical Address.......是本机的网卡的物理地址(MAC地址),矩形区域为本机的IP设置信息。 第二种方法:

用鼠标右键点击“网上邻居”,选择“属性”,会出现下面的窗口。 再双击Internet协议(TCP/IP),在出现的对话框中就可以看到本机的IP地址。这种方法也是最常用的一个方法。 查看物理地址,把鼠标指针放到如下图所示位置,就会出现网卡物理地址(MAC地址)的对话框。 看过“如何查看本机物理地址”的人还看了: 1.怎么查看主机物理地址 2.怎么查看电脑的物理地址 3.如何查看本地连接的物理地址

4.怎么查询电脑的物理地址 5.怎么样查询自己电脑的物理IP地址 6.如何查看电脑的无线物理地址

获取局域网IP和MAC地址的方法

取得IP的方法很多,比如"局域网查看工具",我推荐用“局域网花名册”网上随便搜索一下就有了。 取得MAC地址的方法:WIN+R,输入CMD,用"NBTSTAT -A IP地址" 查看。不过,我试过好像这能查看自己的ip和mac,如下 C:\Documents and Settings\hike>nbtstat -A 211.69.244.171 本地连接: Node IpAddress: [211.69.244.171] Scope Id: [] NetBIOS Remote Machine Name Table Name Type Status --------------------------------------------- 9D15D457A66C432<00> UNIQUE Registered 9D15D457A66C432<20> UNIQUE Registered WORKGROUP <00> GROUP Registered MAC Address = 00-E0-4A-01-BE-9C 如果查看别人的会显示: C:\Documents and Settings\hike>nbtstat -A 211.69.244.188 本地连接: Node IpAddress: [211.69.244.171] Scope Id: [] Host not found. 取得自己电脑IP与MAC的方法:WIN+R,输入CMD,用"IPCONFIG /ALL" 查看,还有一个快速查看mac的命令:“getmac”,也挺方便的。 下面是我强烈推荐的查看别人ip和mac的命令: 先用ping,ping通每一台机器,然后用arp -a 可列出所有刚才ping通的机器的网卡号。

ip地址和mac地址

ip地址和mac地址 ip地址就是你的机器在网络上面的门牌号码,子网掩码的作用就是告诉网络你的机器是处在哪一个小的子网络中。网关是你的机器通过什么服务器来访问的网络。mac地址是网卡在出厂的时候,制造商给网卡赋予的唯一的一个地址标识ip地址就是你的机器在网络上面的门牌号码,子网掩码的作用就是告诉网络你的机器是处在哪一个小的子网络中。网关是你的机器通过什么服务器来访问的网络。mac地址是网卡在出厂的时候,制造商给网卡赋予的唯一的一个地址标识MAC地址 MAC地址1212 一,MAC(Media Access Control, 介质访问控制)MAC地址是烧录在Network Interface Card(网卡,NIC)里的.MAC地址,也叫硬件地址,是由48比特长(6字节),16进制的数字组成.0-23位是由厂家自己分配.24-47位,叫做组织唯一标志符(oganizationally unique ,是识别LAN(局域网)节点的标识。其中第40位是组播地址标志位。网卡的物理地址通常是由网卡生产厂家烧入网卡的EPROM(一种闪存芯片,通常可以通过程序擦写),它存储的是传输数据时真正赖以标识发出数据的电脑和接收数据的主机的地址。 也就是说,在网络底层的物理传输过程中,是通过物理地址来识别主机的,它一般也是全球唯一的。比如,著名的以太网卡,其物理地址是48bit(比特位)的整数,如:44-45-53-54-00-00,以机器可读的方式存入主机接口中。以太网地址管理机构(IEEE)将以太网地址,也就是48比特的不同组合,分为若干独立的连续地址组,生产以太网网卡的厂家就购买其中一组,具体生产时,逐个将唯一地址赋予以太网卡。 形象的说,MAC地址就如同我们身份证上的身份证号码,具有全球唯一性。 如何获取本机的MAC? 对于数量不多的几台机器,我们可以这样获取MAC地址:在Windows 98/Me中,依次单击“开始”→“运行” →输入“winipcfg”→回车。即可看到MAC地址。 在Windows 2000/XP中,依次单击“开始”→“运行”→输入“CMD”→回车→输入“ipconfig /all”→回车。即可看到MAC地址。 修改网卡MAC地址的方法 其实更改网卡MAC地址的功能不论98还是2000,都已经提供了,只是平时大家都没有注意到而以。下面我就说说怎么更改。很简单哦。。。 一,好了,现在先来看看WIN2000。在桌面上网上邻居图标上点右键,选"属性",在出来的"网络和拨号连接"窗口中一般有两个图标,一个是"新建连接"图标,一个是"我的连

如何获得本机MAC地址

如何获得本机MAC地址(网卡地址) 世界上每一台计算机都有唯一的MAC地址与其对应,MAC地址是计算机的身份标示,找出MAC地址可以实现IP地址与MAC地址的绑定,防止IP地址被盗用。 方法一: 条件:计算机装载网卡驱动 第一步:鼠标点击“开始”->“运行”,图1所示 图 1 第二步:在图1中,点击“运行(R)...”,出现运行窗口,在“打开”命令行中输入cmd,如图2所示: 图 2 第三步:在图2中,点击“确定”按钮,出现命令窗口,在命令窗口中键入命令:ipconfig /all,回车,显示图3

图 3 第四步:请您记录下图3红圈中显示的本机MAC地址(网卡地址),去掉“-”符号,字母用小写,即0005.5d72.ac05 注:MAC地址由“0、1、2、3、4、5、6、7、8、9”和小写字母“a、b、c、d、e、f”组成,共12位 方法二:快捷方式 条件:计算机连接外部网络 第一步:鼠标点击“我的电脑”->“网上邻居”,图1所示 第二步:鼠标点击“网上邻居”后,如图点击“查看网络连接”或是“更改适配器的设置”。

第三步:双击“本地连接”(或右击“本地连接”,选择状态)。 第四步:在如图的“本地连接状态”中选择“支持”

第五步:如图选择点击“详细信息”,出现的“实际地址”(有效地址) 就是所要查找的“MAC地址”,将其记录,请您记录下图3红圈中显示的本机MAC地址(网卡地址),去掉“-”符号,字母用小写,即000c.6e65.8ac8 注:MAC地址由“0、1、2、3、4、5、6、7、8、9”和小写字母“a、b、c、d、e、f”组成,共12位

wifi下获取ip和mac地址

2. [代码][Java]代码 01//所需的权限 02 03 04 05--------------------------------------------------------------------- 06//布局 07 14 18 19 23------------------------------------------------------------------------------- 24//正文 25p a c k a g e c o m.w i f i; 26 27i m p o r t j a v a.n e t.I n e t A d d r e s s; 28i m p o r t j a v a.n e t.N e t w o r k I n t e r f a c e; 29i m p o r t j a v a.n e t.S o c k e t E x c e p t i o n;

查看本机MAC地址的方法

查看本机MAC地址的方法 2010年01月21日星期四下午 04:37 1、通用方法:(对于笔记本等有多个网卡的电脑就必须用此方法,或者用MAC地址查看工具来查看!) 在Windows 2000/XP的计算机系统中: 依次单击“开始”→“运行”→输入“cmd”→回车,在出现的命令提示符界面中输“ipconfig /all”(注意“/”前有一空格)→回车,可以得到计算机的MAC地址。其中Physical Address就是计算机的MAC地址。请把显示的“本地连接”和“无线连接”的MAC地址(形如00-11-22-33-44-FF的6组2位字符)记下,到管理系统中填报。 在Windows 9X系列的计算机系统: 依次单击“开始”→“运行”→输入“winipcfg”→回车,出现的图形界面中适配器地址就是计算机的MAC 地址。 2、最方便查MAC地址的方法:(适用于台式机) 首先连接上网络,鼠标右击任务栏中托盘区中的网络连接图标(小电脑),点选“状态”→“支持”选项卡下的“详细信息”,其中的实际地址即为您网卡的MAC地址。 如果任务栏托盘区中没有网络连接图标,可到“控制面板”→“网络连接”→右击“本地连接”图标,点选“状态”→“支持”选项卡下的“详细信息”,其中的实际地址即为您当前上网网卡的MAC地址。 3、其他方法: 获取MAC地址还有另外一种较特别的方法,这种方法无须在命令行提示符下键入命令,无须牢记复杂的命令。只要鼠标轻点几下即可。方法是:鼠标依次点击“开始→所有程序→附件→系统工具→系统信息”在“系统摘要”下,展开“组件→网络→适配器”,右边的摘要中就会列出本机的MAC 地址。 MAC地址也叫物理地址、硬件地址或链路地址,由网络设备制造商生产时写在硬件内部。IP地址与MAC地址在计算机里都是以二进制表示的,IP地址是32位的,而MAC地址则是48位的。MAC地址的长度为48位(6个字节),通常表示为12个16进制数,每2个16进制数之间用冒号隔开,如:08:00:20:0A:8C:6D就是一个MAC地址,其中前6位16进制数08:00:20代表网络硬件制造商的编号,它由IEEE(电气与电子工程师协会)分配,而后3位16进制数0A:8C:6D代表该制造商所制造的某个网络产品(如网卡)的系列号。只要你不去更改自己的MAC地址,那么你的MAC地址在世界是惟一的。 附:MAC地址的作用 IP地址就如同一个职位,而MAC地址则好像是去应聘这个职位的人才,职位可以既可以让甲坐,也可以让乙坐,同样的道理一个节点的IP地址对于网卡是不做要求,基本上什么样的厂家都可以用,也就是说IP地址与MAC地址并不存在着绑定关系。本身有的计算机流动性就比较强,正如同人才可以给不同的单位干活的道理一样的,人才的流动性是比较强的。职位和人才的对应关系就有点像是IP地址与MAC地址的对应关系。比如,如果一个网卡坏了,可以被更换,而无须取得一个新的IP地址。如果一个IP主机从一个网络移到另一个网络,可以给它一个新的IP地址,而无须换一个新的网卡。当然MAC地址除了仅仅只有这个功能还是不够的,就拿人类社会与网络进行类比,通过类比,我们就可以发现其中的类浦Γ玫乩斫釳AC地址的作用。 无论是局域网,还是广域网中的计算机之间的通信,最终都表现为将数据包从某种形式的链路上的初始节点出发,从一个节点传递到另一个节点,最终传送到目的节点。数据包在这些节点之间的移动都是由ARP(Address

获取MAC地址和IP地址的程序设计

获取MAC地址和IP地址的程序设计 通信0402班学号:0905040225 姓名:张玉海指导老师: 王国才 【设计目标】 通过设计程序能获取本计算机的MAC地址和IP地址并显示。 【设计原理和方法】 本程序设计包含两个部分:一、获取本机IP地址;二、获取本机MAC地址。我是通过VB编程实现的。 其中,为了获取本机的IP地址,要使用WinSock库,WinSock API是Microsoft Windows 的网络程序接口。应用程序在使用WinSock API之前,必须调用WSAstartup函数,只有调用函数成功返回(表示应用程序与WinSock库成功的简历其连接),应用程序才可以调用其他Windows Socketers .DLL中的函数。当程序将要结束时,又必须调用WSACleanup函数可以结束Windows Socketers .DLL的使用。WinSock规范定义了几个数据库的例程。其中我们要用到gethostname和gethostbyname两个函数来得到IP地址。gethostname可以获得主机名, gethostbyname函数能够从主机名得到对应的“主机”(由名字和地址标识),函数唯一的参数name就是前面调用gethostname函数得到的主机名,二返回值是一个hostent结构,他可以标识一个“主机”列表,hostent的最后一个分量hAddrList中,就可以得到与主机名对应的一个或多个IP地址,hAddrList是一个列表,通过它就可以得到所有的IP地址。 MAC地址也叫物理地址、硬件地址或链路地址,此程序设计的获取MAC地址是通过NetBIOS编程实现的。其中,要用到网络编程接口中的一个重要的概念,那就是LANA编号(LAN适配器编号,LANadaprer),每张物理网卡都会分配一个独一无二的LANA编号。要想调用NetBIOS API函数,需要链接系统的NETAPI.DLL文件NetBIOS API包含的内容其实分全场简单,因为实际上NetBIOS API只是一个函数NetBios ,在Visual Basic中可以这样引入: Private Declare Function Netbios Lib "netapi32.dll" (pncb As NET_CONTROL_BLOCK) As Byte 函数中唯一的参数pncb是一个指向某个网络控制块(NET_CONTROL_BLOCK)的指针,在那个NET_CONTROL_BLOCK结构中,包含了为执行一个NetBIOS命令,相应的NetBios函数需要用的的前部信息。NetBIOS提供了几个命令专门负责收集网络参数的命令,其中包括名字查找命令和适配器状态命令,利用适配器状态命令可以获得本地计算机及其LANA编号的有关信息,这就是查知其的MAC地址的一条可行路径。其中在网络适配器状态命令的ADAPTER_STA TUS结构中我们最为关心的就是adapter_address字段,它标识的就是网卡的MAC地址。

C语言获取IP和MAC码

首先看从C语音的几种方法比较起,看看如下,结果是获取IP和MAC码 C#遍历局域网的几种方法及比较 扫描局域网IP列表的几种方法 很多软件都有获知局域网在线计算机IP的功能,但是在.net怎么实现呢,有好多方法, 下面我给大家介绍几种,供大家参考。 1、微软社区上介绍了使用Active Directory 来遍历局域网 利用DirectoryEntry组件来查看网络 网址:https://www.360docs.net/doc/c914958163.html,/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: "+https://www.360docs.net/doc/c914958163.html,); foreach(DirectoryEntry computer in domain.Children) { Console.WriteLine("Computer: "+https://www.360docs.net/doc/c914958163.html,); } } } } 效果评价:速度慢,效率低,还有一个无效结果 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

查看本机和局域网pc的MAC地址的常用方法

如何查看局域网内其他计算机的MAC地址和IP 方法1:首先要知道那个计算机的某个信息。如果知道计算机名的话,可以PING 计算机名,这样就会知道IP,然后再用 NBTSTAT -a IP,就能知道物理地址。如果知道IP的话,直接用nbtstat -a IP,就能知道所有的。 方法2:DOS命令批量统计局域网内各台电脑的IP地址和其相对应的MAC地址,这样的好处是可以便捷、准确的控制管理每台电脑,发现某台电脑中毒或者数据流量异常能及时排查、封网。 能实现这种功能的工具在网上有很多,例如:超级网管(SuperLANadmin)等等,喜欢的朋友可以自己搜索一下。在这里我主要谈的是调用本机DOS命令来实现上述结果,毕竟我们不可能天天把工具带在身边。 地址解析协议(ARP)用于实现IP地址到网络接口硬件地址的映射,该命令只有在安装了 TCP/IP 协议之后才可用。当某主机要向以太网中另一台主机发送IP数据时,它首先根据目的主机的IP地址在ARP高速缓存中查询相应的以太网地址,ARP高速缓存是主机维护的一个IP地址到相应的以太网地址的映射表。如果查到匹配的结点,则相应的以太网地址被写入以太网帧首部,数据包被加入到输入到输出列队等待发送。如果查询失败,ARP会先保留等待发送的IP数据包,然后广播一个询问目的主机硬件地址的ARP报文,等收到回答后再把IP数据包发送出去。 命令如下:运行cmd.exe后执行: for /L %i IN (1,1,254) DO ping -w 2 -n 1 192.168.1.%i arp -a 回车,一只烟的功夫就会看到收集好列表。 (注意:把192.168.1 IP地址替换成你所在局域网的IP地址) FOR对一组文件逐一运行一条命令。该命令可用在批处理文件中,也可命令提示符下直接调用。 语法:FOR在批处理程序中的使用语法如下: FOR %%变量 IN (集合) DO 命令 [命令参数] FOR在命令提示符下的使用语法如下: FOR %变量 IN (集合) DO 命令 [ 参数: %%变量或%变量 代表一个可替换的变量。FOR命令将用指定的一组文件中的每一个文本字符串来替换%%变量(或%变量),直到此命令(在命令参数中指定的)处理完所有的文件为止。 用%%变量来执行一批处理程序中的FOR命令。用%变量来执行命令提示符下的FOR命令。 集合 指定一个或多个要用特定命令对其进行处理的文件或文本字符串。圆括号必须得有。 命令 指定要对一组文件中每一文件进行处理的命令。 FOR─注解 使用关键字IN及DO IN和DO并不是参数,但FOR命令中要求这两个关键字。如果省略了这两个关键字, 则MS-DOS将显示一错误信息。 使用可替代变量 除了数字0到9之外,你可把任何字符用作变量,以避免与批处理参数%0到%9的混淆。对简单的批处理程序来说,象%%F这样的一个单一字符就足够了。在复杂的批处理程序中,你可把多个值用于变量以区分不同的可替换变量。然而,在同一命令行上不能嵌套(增加)多个FOR命令。指定一组文件集参数可代表一组文件或几组文件。你可用通配符(*及?)来指定一文件集。下面是合法的文件集: (*.doc) (*.doc *.txt *.me) (jan*.doc jan*.rpt feb*.doc feb*.rpt) (ar??1991.* ap??1991.*) 当你使用FOR命令时,集中的第一个值将代替%%变量(或%变量),而为了处理此值MS-DOS将执行指定的命令;此过程一直持续进行,直到MS-DOS将对应于集中的值(或多值)的所有文件(或多组文件)处理完毕为止。FOR─例子

查询本机MAC地址和网络MAC地址的方法

查询网卡MAC地址的三种方法 对于熟悉电脑和网络的人来说,查询MAC地址是很简单的事情。但很多人是非相关专业出身,甚至是电脑小白,有时候不可避免会遇到想顺手帮忙却帮不上的尴尬场景。 本文介绍几种简单查看网卡MAC地址的方法,第一种是用鼠标点击查看,第二种是命令行查看本机MAC地址,第三种是命令行查看网络上部分其它IP的MAC地址: 一、鼠标查看本机IP和MAC地址: 1、鼠标右键点击右下角网络图标(无线图标,有线网卡则点有线 图标); 2、左键选择“打开网络和共享中心”,如图: 3、在弹出窗口中左键点击“更改适配器设置”,如图: 4、右键点击要查看的网卡,再左键选择“状态”,如图:

5、在弹出的状态窗口中左键选择“详细信息”,如图: 6、在弹出的详细信息窗口中就可以看到MAC地址(物理地址)了,如图:

二、命令行ipconfig命令查看本机MAC地址 1、同时按住“Win+R”键,弹出运行窗口,在“打开”后面的输入框中输入“cmd”命令,左键点击“确定”后弹出命令行窗口。如图: (注:Win键是Alt键旁边画着视窗符号的按键) 2、在命令行窗口中输入“ipconfig /all”(注意中间有个空格),然后回车,就可以查看本机所有网卡的MAC地址。如图: 回车之后显示的内容如下图,有几张网卡,就有几个MAC地址。

三、命令行arp命令查看本机所在网络中部分IP的MAC地址 1、同时按住“Win+R”键,弹出运行窗口,在“打开”后面的输入框中输入“cmd”命令,左键点击“确定”后弹出命令行窗口。(与第二条第一步相同) 2、在命令行窗口中输入“arp -a”(注意中间有个空格),然后回车,就可以查看本机所有网卡所接入的网络中部分IP所对应网卡的MAC地址。如图:

C语言获取Linux系统的IP地址和MAC地址

实际环境和特殊需求往往会将简单问题复杂化,比如计算机IP地址,对于一个连接中socket,可以直接获得本端和对端的IP、端口信息。但在一些特殊场合我们可能需要更多的信息,比如系统中有几块网卡,他们的Mac地址是多少,每块网卡分配了几个IP(一个网卡对应多个IP)等等。 这些信息往往需要通过ifconfig指令来获得,对于程序员来说,在代码中调用外部的shell 指令可不是个最佳方案,因为没人能保障不同平台、不同版本的ifconfig指令输出的格式是一致的。本篇文章中将介绍通过ioctl函数实现上述需求。 #include int ioctl(int fd, int request, … ); 返回:成功返回0,失败返回-1 ioctl函数的参数只有3个,但却是Unix中少有的几个“家族类”复杂函数,这里摘录一段《Unix网络编程》一书中对ioctl函数的描述: 在传统上ioctl函数是用于那些普遍使用、但不适合归入其他类别的任何特殊的系统接口……网络程序(一般是服务器程序)中ioctl常用于在程序启动时获得主机上所有接口的信息:接口的地址、接口是否支持广播、是否支持多播,等等。 ioctl函数的第一个参数fd,可以表示一个打开的文件(文件句柄)或网络套接字,第二个和第三个参数体现了函数的家族特色,参数二request根据函数功能分类定义了多组宏,而参数三总是一个指针,指针的类型依赖于参数二request。因为ioctl的种类实在太多,这里只列出和本文相关的几个参数定义: 分类参数二(宏)参数三描述 接口SIOCGIFCONF struct ifconf 获得所有接口列表 SIOCGIFADDR struct ifreq 获得接口地址 SIOCGIFFLAGS struct ifreq 获得接口标志 SIOCGIFBRDADDR struct ifreq 获得广播地址 SIOCGIFNETMASK struct ifreq 获得子网掩码 上表中列出了两个相关的结构体:struct ifconf 和struct ifreq,要了解ioctl函数的具体运用,首先要了解这两个结构: struct ifconf { int ifc_len;

查看本机和局域网pc的MAC地址的常用方法

如何査看局域网内其他计算机的MAC地址和IP 方法1:首先要知道那个计算机的某个信息。如果知道计算机名的话,可以讣算机名,这样就会知道 IP,然后再用XBTSTAT -a IP,就能知道物理地址。如果知道IP的话,直接用nbtstat -a IP,就能知道所有的。方法2: DOS命令批量统计局域网内各台电脑的IP地址和其相对应的MAC地址,这样的好处是可以便捷、准确的控制管理每台电脑,发现某台电脑中毒或者数据流量异常能及时排查、封网。 能实现这种功能的工具在网上有很多,例如:超级网管(SuperLANadmin)等等,喜欢的朋友可以自己搜索一下。在这里我主要谈的是调用本机DOS命令来实现上述结果,毕竟我们不可能天天把工具带在身边。 地址解析协议(ARP)用于实现IP地址到网络接口硬件地址的映射,该命令只有在安装了 TCP/IP协议之后才可用。当某主机要向以太网中另一台主机发送IP数据时,它首先根据目的主机的IP地址在ARP高速缓存中查询相应的以太网地址,ARP高速缓存是主机维护的一个IP地址到相应的以太网地址的映射表。如果查到匹配的结点,则相应的以太网地址被写入以太网帧首部,数据包被加入到输入到输出列队等待发送。如果查询失败,ARP会先保留等待发送的IP数据包,然后广播一个询问H的主机硬件地址的ARP报文,等收到回答后再把IP数据包发送出去。 命令如下:运行cmd. exe后执行: for /L %i IN (1, 1, 254) DO ping -w 2 -n 1 192. 168. 1. %i arp -a 回车,一只烟的功夫就会看到收集好列表。 (注意:把192. 168. 1 IP地址替换成你所在局域网的IP地址) FOR对一组文件逐一运行一条命令。该命令可用在批处理文件中,也可命令提示符下直接调用。 语法:FOR在批处理程序中的使用语法如下: FOR %%变量叮(集合)DO命令[命令参数] FOR在命令提示符下的使用语法如下: FOR %变量鸟(集合)DO命令[ 参数: %%变量或%变量 代表一个可替换的变量。FOR命令将用指定的一组文件中的每一个文本字符吊来替换%%变量(或%变量),直到此命令(在命令参数中指定的)处理完所有的文件为止。 用%%变量来执行一批处理程序中的FOR命令。用%变量来执行命令提示符下的FOR命令。 集合 指定一个或多个要用特定命令对其进行处理的文件或文本字符串O圆括号必须得有。 命令 指定要对一组文件中每一文件进行处理的命令。 FOR—注解 使用关键字IN及DO 和DO并不是参数,但FOR命令中要求这两个关键字。如果省略了这两个关键字, 则MS-DOS将显示一错误信息。 使用可替代变量 除了数字0到9之外,你可把任何字符用作变量,以避免与批处理参数%0到%9的混淆。对简单的批处理程序来说,象%%F这样的一个单一字符就足够了。在复杂的批处理程序中,你可把多个值用于变量以区分不同的可替换变量。然而,在同一命令行上不能嵌套(增加)多个FOR命令。指定一组文件集参数可代表一组文件或儿组文件。你可用通配符(*及?)来指定一文件集。下面是合法的文件集: (*. doc) (*? doc 水.txt 水.me) (jan*? doc jan*? rpt feb*? doc feb*? rpt) (ar??1991. * ap??1991. *)

JS获取IP、MAC和主机名的几种方法

JS获取IP、MAC和主机名的几种方法 今天在搞JS(JavaScript)获取客户端IP的小程序,上网搜了下,好多在现在的系统和浏览器中的都无效,很无奈,在Chrome、FireFox中很少搞到直接利用ActiveX获取IP等的JS脚本。下面的代码是我在所有windowsNT5.0及以上的系统上都测试通过的,给出代码: 方法一(只针对IE且客户端的IE允许AcitiveX运行,通过平台:XP,SERVER03,2000): 获取客户端IP。 [html]view plaincopy 1. 2. 3.GetLocalIP 4. 5. 6.获取IP: 7. 8. 9. 方法二(所有的平台及浏览器): 获取客户端处在网络中的IP,前提是客户得联网。 [html]view plaincopy 1. 2. 3. 4.JavaScript获取客户端IP[利用新浪接口] 5. 6. 7.

IP地址与Mac地址绑定

IP地址与Mac地址绑定 拓扑图如下: 一、静态地址绑定: [SW1]user-bindstaticip-addressmac-address5489-9828-5BB1 Info:1staticuser-binditem(s)added. [SW1]user-bindstaticip-addressmac-address5489-9804-0D67 Info:1staticuser-binditem(s)added. 二、DHCP地址池中IP地址与Mac地址绑定 [SW1]ippool192network [SW1-ip-pool-192network]gateway-list [SW1-ip-pool-192network]networkmask [SW1-ip-pool-192network]excluded-ip-address SW1-ip-pool-192network]leaseday0hour12minute0 [SW1-ip-pool-192network]dns-list [SW1-ip-pool-192network] [SW1-ip-pool-192network]static-bindip-addressmac-address5489-986B-7896 注意在地址池中ip地址与Mac地址绑定时出现的错误: [SW1-ip-pool-192network]static-bindip-addressmac-address5489-983E-384D Error:Thestatic-MACisexistinthisIP-pool. 错误:这个静态MAC地址在地址池中已经存在。 ----DHCP已经给这个MAC地址分配IP了,不能绑定。 解决方法: 这个可能是因为这个MAC已经获取到其它IP了,你清空下DHCP地址池试试,普通视图用resetippool踢出来。 例如,resetippoolname1all?。 resetippool{interfaceinterface-name|nameip-pool-name}{low-ip-addresshigh-ip-address|all|conflict|expired|used} 参数说明 nameip-pool-nameIP地址池名称。字符串形式,长度范围是1~64。 interfaceinterface-name接口地址池名称,一般以接口类型和接口编号命名。字符串形式,长度范围是1~64。 low-ip-address地址段的起始地址。 high-ip-address地址段的结束地址。 all所有的地址。 conflict冲突的IP地址。 expired过期的IP地址,处于空闲状态。 used使用的IP地址。 视图 用户视图、系统视图 缺省级别 3:管理级 使用指南 resetippool命令用来重置指定的IP地址池的地址状态至空闲状态。指定地址段用来重置地址段内所有地址状态至空闲状态;指定all、conflict、expired、used等参数用来重置具体地址状态对应的地址。 三、基于vlan的IP地址与Mac绑定 [SW1]user-bindstaticip-addressmac-address1234-5678-3435vlan1

查询本机MAC地址和网络MAC地址的方法

查询本机MAC地址和网络MAC地址的方法

查询网卡MAC地址的三种方法 对于熟悉电脑和网络的人来说,查询MAC地址是很简单的事情。但很多人是非相关专业出身,甚至是电脑小白,有时候不可避免会遇到想顺手帮忙却帮不上的尴尬场景。 本文介绍几种简单查看网卡MAC地址的方法,第一种是用鼠标点击查看,第二种是命令行查看本机MAC地址,第三种是命令行查看网络上部分其它IP的MAC地址: 一、鼠标查看本机IP和MAC地址: 1、鼠标右键点击右下角网络图标(无线图标,有线网卡则点有线 图标); 2、左键选择“打开网络和共享中心”,如图: 3、在弹出窗口中左键点击“更改适配器设置”,如图: 4、右键点击要查看的网卡,再左键选择“状态”,如图:

二、命令行ipconfig命令查看本机MAC地址 1、同时按住“Win+R”键,弹出运行窗口,在“打开”后面的输入框中输入“cmd”命令,左键点击“确定”后弹出命令行窗口。如图: (注:Win键是Alt键旁边画着视窗符号的按键) 2、在命令行窗口中输入“ipconfig /all”(注意中间有个空格),然后回车,就可以查看本机所有网卡的MAC地址。如图: 回车之后显示的内容如下图,有几张网卡,就有几个MAC地址。

三、命令行arp命令查看本机所在网络中部分IP的MAC地址 1、同时按住“Win+R”键,弹出运行窗口,在“打开”后面的输入框中输入“cmd”命令,左键点击“确定”后弹出命令行窗口。(与第二条第一步相同) 2、在命令行窗口中输入“arp -a”(注意中间有个空格),然后回车,就可以查看本机所有网卡所接入的网络中部分IP所对应网卡的MAC地址。如图:

C# .net获取电脑IP和MAC

C# .net获取电脑IP和MAC ///

/// 取得用户客户端IP(穿过代理服务器取远程用户真实IP地址) /// public static string GetClientIP() { //如果使用代理,获取真实IP string userip = string.Empty; if (HttpContext.Current.Request.ServerVariables["HTTP_X_FORW ARDED_FOR"] != "") { userip = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; } else { userip = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; } if (userip == null || userip == "") { userip = https://www.360docs.net/doc/c914958163.html,erHostAddress; } return userip; //HttpRequest Request = HttpContext.Current.Request; //try //{ // if (HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null) // { // return HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString(); // } // else // { // return HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString(); // } //} //catch { return "127.0.0.1"; } }

相关文档
最新文档