根据网络名称获取IP
private static IPAddress[] GetLocalConnection1IPAddress(string name)
{
System.Net.NetworkInformation.NetworkInterface[] nis = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces();
var localConnection1IPs = nis
.Where(ni => ni.Name == name && ni.OperationalStatus == System.Net.NetworkInformation.OperationalStatus.Up)
.SelectMany(ni => ni.GetIPProperties().UnicastAddresses)
.Where(addr => addr.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
.Select(addr => addr.Address)
.ToArray();
return localConnection1IPs;
}
根据IP获取MAC地址
[DllImport("Iphlpapi.dll")]
public static extern uint SendARP(uint DestIP, uint SrcIP, ref ulong pMacAddr, ref uint PhyAddrLen);
///<summary>
/// 根据IP获取MAC地址
///</summary>
///<param name="RemoteIP">目标机器的IP地址如(192.168.1.1)</param>
///<returns>目标机器的mac 地址</returns>
public string GetMacAddress(string RemoteIP)
{
try
{
IPAddress _Address;
if (!IPAddress.TryParse(RemoteIP, out _Address)) return "";
uint DestIP = System.BitConverter.ToUInt32(_Address.GetAddressBytes(), 0);
ulong pMacAddr = 0;
uint PhyAddrLen = 6;
uint error_code = SendARP(DestIP, 0, ref pMacAddr, ref PhyAddrLen);
byte[] _Bytes1 = BitConverter.GetBytes(pMacAddr);
return BitConverter.ToString(_Bytes1, 0, 6);
}
catch
{
return "";
}
}