ASP.NET C# 获取IP与MAC

来源:互联网 发布:淘宝其他费用 编辑:程序博客网 时间:2024/06/06 05:42
 

获取服务器的IP地址方法以DNS法较为简单实用,如下:
  using System.Net;

 

 private void ButtonIP_Click(object sender, System.EventArgs e)
  { 
     System.Net.IPAddress[] addressList = Dns.GetHostByName(Dns.GetHostName()).AddressList;
     if ( addressList.Length>1)
     {  
TextLIP.Text = addressList[0].ToString();
          
TextSIP.Text = addressList[1].ToString();
     }
     else
     {
          
TextLIP.Text = addressList[0].ToString();
         
TextSIP.Text = "没有可用的连接";
     }
  }

 

获取服务器的IP地址与MAC地址另一方法如下:

 

   using System.Management;

 

   string stringMAC = "";
   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();
    }
   } 

 

获取客户端本机的IP地址相当简易,方法如下:

 

using System.Net;

 

TextIP.Text=Page.Request.UserHostAddress;

 

 

如果要想获得远程的地址,需要用sendarp这个函数来实现。具体的代码如下:
[DllImport("Iphlpapi.dll")]
private static unsafe extern
int SendARP(Int32 dest,Int32 host,ref IntPtr mac,ref IntPtr length);
[DllImport("Ws2_32.dll")]
private static extern
Int32 inet_addr(string ip);
Int32 ldest= inet_addr("157.60.68.163");//目的地的ip
Int32 lhost= inet_addr("157.60.68.33");//本地的ip
try {
Byte[] macinfo=new Byte[6];
Int32 length=6;
IntPtr mac=new IntPtr(macinfo[0]);
IntPtr len=new IntPtr(6);
int ii=SendARP(ldest,lhost, ref mac, ref len);
Console.WriteLine("Mac Add:" mac);
Console.WriteLine("length:" len);
}
catch(Exception err)
{
Console.WriteLine(err);
}

 

 

 

 

 

 

 

原创粉丝点击