- 浏览: 428745 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
weishuang:
全部无法访问
ArcGIS 资源 -
04023129:
请问一下怎么配置meetme有硬件要求么?
Asterks(软交换)里配置两部简单的SIP软电话 -
jayli426:
请教:
181 正被转接
202 被接受:用于转介
有 ...
所有已知的SIP处理应答状态码 -
ligg5034:
<ww:if test="sftd.equal ...
webwork<ww:if>标签的使用 -
wanggod:
请问我
return (Hello)super.getPort ...
java6 WebServices客户端
获取本机和远程计算机IP及MAC地址
- 博客分类:
- C# .NET
利用dns类和WMI规范获取IP及MAC地址
在C#编程中,要获取主机名和主机IP地址,是比较容易的.它提供的Dns类,可以轻松的取得主机名和IP地址.
示例:
string strHostName = Dns.GetHostName(); //得到本机的主机名
IPHostEntry ipEntry = Dns.GetHostByName(strHostName); //取得本机IP
string strAddr = ipEntry.AddressList[0].ToString(); //假设本地主机为单网卡
在这段代码中使用了两个类,一个是Dns类,另一个为IPHostEntry类,二者都存在于命名空间System.Net中.
Dns类主要是从域名系统(DNS)中检索关于特定主机的信息,上面的代码第一行就从本地的DNS中检索出本地主机名.
IPHostEntry类则将一个域名系统或主机名与一组IP地址相关联,它与DNS类一起使用,用于获取主机的IP地址组.
要获取远程主机的IP地址,其方法也是大同小异.
在获取了IP地址后,如果还需要取得网卡的MAC地址,就需要进一步探究了.
这里又分两种情况,一是本机MAC地址,二是远程主机MAC地址.二者的获取是完全不同的.
在获取本机的MAC地址时,可以使用WMI规范,通过SELECT语句提取MAC地址.在.NET框架中,WMI规范的实现定义在System.Management命名空间中.
ManagementObjectSearcher类用于根据指定的查询检索管理对象的集合
ManagementObjectCollection类为管理对象的集合,下例中由检索对象返回管理对象集合赋值给它.
示例:
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();
}
获取远程主机的MAC地址时,需要借用API函数SendARP.该函数使用ARP协议,向目的主机发送ARP包,利用返回并存储在高速缓存中的IP和MAC地址对,从而获取远程主机的MAC地址.
示例:
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); //发送ARP包
return Convert.ToString(macinfo,16);
}
catch(Exception err)
{
Console.WriteLine("Error:{0}",err.Message);
}
return 0.ToString();
但使用该方式获取MAC时有一个很大的限制,就是只能获取同网段的远程主机MAC地址.因为在标准网络协议下,ARP包是不能跨网段传输的,故想通过ARP协议是无法查询跨网段设备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 {
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 {
Console.WriteLine(temp[i]);
}
Console.WriteLine(gi.getRemoteMac("192.168.0.3","192.168.0.1"));
}
}
发表评论
-
Visual studio 2010无法安装Silverlight4 Tools的解决办法
2011-02-28 12:05 2194如果你也碰到这个问题,那么算你运气好;昨日下了园子里vs2 ... -
C# winform32位加密算法
2008-06-19 15:07 1387private string MD5(string sourc ... -
.net下的SHA-1与MD5加密算法
2008-06-19 15:07 2007//SHA-1算法string password = Syst ... -
用C#写的自定义数据库操作类
2008-06-19 15:06 1748using System;using System.Data; ... -
COM+数据库连接池
2008-06-19 15:05 1756连接池添加以下引用Syst ... -
数据库、服务器设置
2008-06-19 15:05 972private ConnClass.SqlConn sql; ... -
起泡排序与简单排序法
2008-06-19 15:03 972using System; namespace 排序算法{cl ... -
顺序查找与二分查找
2008-06-19 15:02 1183using System; namespace 查找算法{cl ... -
正则表达式应用范例
2008-06-19 15:02 888The following example shows the ... -
序列化与反序列化
2008-06-19 15:01 1271poorServer 代码 using System ... -
DataList里面用C#实现自定义分页
2008-06-19 14:59 1706PagedDataSource pds=new Pa ... -
ASP.NET里面用C#实现发送邮件
2008-06-19 14:59 1883if(TextBoxNumber1.Text==" ... -
如何控制DataGrid里的内容换行与不换行
2008-06-19 14:58 1874<FONT size=2><%@ Page ... -
在C#窗体应用程序中载入Web页
2008-06-19 14:57 4607用AxWebBrowser的准备 "工具箱&quo ... -
VS2005[C#] 操作 Excel 2003
2008-06-19 14:56 2557using System;using System.Colle ... -
VS C# 2008里只让应用程序只运行一个实例
2008-06-19 14:55 1505using System;using System.Colle ... -
VS C# 2008导入到Excel 2007
2008-06-19 14:54 2621string path = System.Environmen ... -
VS C# 2008导入到xml
2008-06-19 14:53 1268//创建MobileBackup.xml文件 ... -
VS C# 2008从xml里读取数据
2008-06-19 14:53 1235//从xml文件中读取发件箱信息 private ... -
VS C# 2008鼠标移上时与按下时动态改变PicturBox的背景图片
2008-06-19 14:52 1591//获得当前项目运行的路径 path ...
相关推荐
在对网内主机进行监控时需要通过java获取远程机器的mac地址
nbtstat 及 netstat 命令---查对方 IP mac 地址 根据 IP 查对方计算机名 nbtstat 命令是用于查看当前基于 NETBIOS 的 TCP/IP 连接状态的命令,通过该命令可以获得远程或本地机器的组名和机器名。该命令的主要用途是...
“MAC扫描器”是用于批量获取远程计算机网卡的物理地址一款网络管理软件。 本软件运行于网络(局域网、Internet都可以)内的一台机器上,即可监控整个网络的连接情况,实时检测各用户的IP、MAC、主机名、用户名等并...
获取MAC地址 计算机用户名,内外网IP,开启远程连接,只能用于XP
远程关机(可获MAC,hostName),可以根据需要自己填写IP地址,根据IP地址自己可以获取到远程MAC地址和机器名称,然后根据远程机器的密码和帐号实现关机
PcAnywhere 是一种远程控制软件,允许用户从远程计算机控制家中的电脑,但前提是需要获取被控端的 IP 地址。用户可以通过动态域名解析软件获取固定 IP 地址,然后通过 PcAnywhere 实现远程控制。 PcAnywhere 的...
附录:怎样利用 NetWaker 启动远程计算机 <br/>一、硬件设置 <br/> 1.被控机的硬件需求 <br/> 实现网络开机,需要主板、网卡、电源3个设备支持。首先需要查看主板使用说明书,查看主板是否支持Wake-Up...
“MAC扫描器”是用于批量获取远程计算机网卡的物理地址一款网络管理软件。 本软件运行于网络(局域网、Internet都可以)内的一台机器上,即可监控整个网络的连接情况,实时检测各用户的IP、MAC、主机名、用户名等并...
“MAC扫描器”是用于批量获取远程计算机网卡的物理地址一款网络管理软件。 本软件运行于网络(局域网、Internet都可以)内的一台机器上,即可监控整个网络的连接情况,实时检测各用户的IP、MAC、主机名、用户名等并...
4、ping本机网卡的IP地址,以检验本机网卡是否安装正确和本机的网络配置是否合适。 5、ping本机主机名,以检验本机网卡是否安装正确和本机的网络配置是否合适。 6、先询问并获知身边某同学的IP地址。然后用ping命令...
“MAC扫描器”是用于批量获取远程计算机网卡的物理地址一款网络管理软件。 本软件运行于网络(局域网、Internet都可以)内的一台机器上,即可监控整个网络的连接情况,实时检测各用户的IP、MAC、主机
此IP+MAC强力扫描器是一款用于批量获取远程计算机网卡的物理地址一款网络管理软件。通过简单设置就能扫描指定网段上的所有pc的MAC地址,是国内仅有的能与sniffer相抗衡的权威软件,超大功能,ip、MAC地址,主机名,...
然而传统的网络标识(如IP地址、MAC地址)可以伪造,已不足以区分远程主机。利用时钟漂移率这一硬件特有的、稳定的物理特征作为“网络指纹”,可以精确地识别每一台远程主机。本作品利用TCP报文中的时间戳信息,通过...
MAC扫描器 是用于批量获取远程计算机网卡的物理地址(即MAC地址)的一款绿色软件。下载后解压到一个目录,直接运行即可。本软件可以在win9x/2000/xp等操作系统中 用户界面主要分为下面的几个部分: IP 范围第一个...
实例441 得到本机MAC地址 677 实例442 获得系统打开的端口和状态 678 实例443 更改DNS地址 680 14.2 远程控制 681 实例444 远程控制计算机 682 实例445 远程服务控制 683 14.3 网络复制文件 686 实例...
实例352 获取本机MAC地址 实例353 获得系统打开的端口和状态 12.2 局域网控制与管理 实例354 获取局域网计算机名称和IP 实例355 远程控制局域网计算机 12.3 局域网资源管理 实例356 计算机监控 实例357 实现进程间...
这时C先发送ARP包获得主机B的MAC地址,然后向B发送ARP Reply数据包,其中源IP地址为A的IP地址,但是源MAC地址却是主机C的MAC地址。主机B收到该ARP Reply后,将根据新的IP地址与MAC映射对更新ARP缓存。这以后当B给A...
3-自动获取本机和网关的IP和MAC地址。 4-扫描获取指定IP段内的存活主机及相关信息:IP地址、MAC地址、工作组和主机名。 5-可以在两种扫描方式中进行选择:一般扫描(基于Netbios),高级扫描(基于Arp)。 6-监视所有...
可实现服务器端向客户端广播信息,还可获取本地IP或远程客户机的IP和MAC地址 功能要求 实现一个局域网环境下的文件的广播以及接收系统: 一行一行读取文件然后广播,同一子网掩码下的的用户都可以接收并查看