程序实现;输入IP地址,也就是参数,获取该IP地址对应该设备的MAC地址?
给出原代码,必给分!
解决方案 »
- 面试题。。。
- 求一winform 程序,判断指定路径下是否存在txt文档
- c#打包
- 关于romoting的一个异常,大家帮忙看看可能什么原因
- 有谁用过这个函数:ListView_CreateDragImage,知道它属于哪个DLL么?
- 高後進來看看,這個問題應該不難的.
- DataGrid 单元格keydown事件如何截获enter键
- 请问access怎样用update datatable的方法添加记录
- xtragrid的中,点击每列下的黑箭头,会出现一个查找的条件窗口,我想问能不能把这个窗口改成中文的.
- 请问VB中的With在C#中有无“代替品”?
- 请问C#中怎样绘制ListView上面的滚动条?
- 重写函数必须先继承类吗?
string stringIP = "";
ManagementClass MC = new ManagementClass "Win32_NetworkAdapterConfiguration");
ManagementObjectCollection MOC= MC.GetInstances(); foreach(ManagementObject MO in MOC)
{
if ((bool)MO["IPEnabled"] == true)
{
stringMAC += MO["MACAddress"].ToString();
TextMAC.Text = stringMAC.ToString();
string[] IPAddresses = (string[]) MO["IPAddress"];
if(IPAddresses.Length > 0)
stringIP = IPAddresses[0];
TextIP.Text = stringIP.ToString();
}
}
using System.Text.RegularExpressions;
using System.Text;
[DllImport("Iphlpapi.dll")]
private static unsafe extern int SendARP(Int32 dest,Int32 host,ref Int32 mac,ref Int32 length);
[DllImport("Ws2_32.dll")]
private static extern Int32 inet_addr(string ip);
public string GetMACFromIP(string A_strIP)
{
string strRet = "Unknown";
string strIPPattern = @"^\d+\.\d+\.\d+\.\d+$";
Regex objRex =new Regex(strIPPattern);
if(objRex.IsMatch(A_strIP) == true)
{
Int32 intDest = inet_addr(A_strIP);
Int32 [] arrMAC = new Int32[2];
Int32 intLen = 6;
int intResult = SendARP(intDest,0,ref arrMAC[0],ref intLen);
if(intResult == 0)
{
Byte [] arrbyte = new Byte[8];
arrbyte[5] = (Byte)(arrMAC[1] >> 8);
arrbyte[4] = (Byte)arrMAC[1];
arrbyte[3] = (Byte)(arrMAC[0] >> 24);
arrbyte[2] = (Byte)(arrMAC[0] >> 16);
arrbyte[1] = (Byte)(arrMAC[0] >> 8);
arrbyte[0] = (Byte)arrMAC[0];
StringBuilder strbMAC = new StringBuilder();
for(int intIndex = 0 ;intIndex < 6;intIndex ++)
{
if(intIndex > 0) strbMAC.Append("-");
strbMAC.Append(arrbyte[intIndex].ToString("X2"));
}
strRet = strbMAC.ToString();
}
}
return strRet;
}