IP获取方式

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Management;
using System.Runtime.InteropServices;

namespace HelloWorldConsole
{
class Program
{
static void Main(string[] args)
{
//Dns.GetHostByName(Dns.GetHostName());
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 < temp.Length; i++)
{
Console.WriteLine(temp[i]);
}
Console.WriteLine(gi.getRemoteMac("192.168.0.3", "192.168.0.1"));
Console.ReadKey();
}
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);

/// <summary>
/// 获取本机IP
/// </summary>
public void getLocalIP()
{
IPHostEntry ipHost = Dns.GetHostEntry(Dns.GetHostName());
if (ipHost.AddressList.Length > 0)
{
foreach (IPAddress ipAddress in ipHost.AddressList)
{
Console.WriteLine(ipAddress.ToString());
//Console.ReadKey();
}
}
}

/// <summary>
/// 获取本机Mac地址
/// </summary>
public void 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();
Console.WriteLine(mac);
}
}
}

//获取远程主机IP
public string[] getRemoteIP(string RemoteHostName)
{
IPHostEntry ipEntry = Dns.GetHostEntry(RemoteHostName);
IPAddress[] IpAddr = ipEntry.AddressList;
string[] strAddr = new string[IpAddr.Length];
for (int i = 0; i < IpAddr.Length; 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();
}
}

}


}
posted @ 2011-03-15 21:37  Jake.Xu  阅读(770)  评论(0编辑  收藏  举报