【发布时间】:2011-10-21 04:27:38
【问题描述】:
我有一个返回本地 IP 地址的 C# 函数。
private string GetLocalIPByHostName()
{
string host = Dns.GetHostName();
string LocalIP = string.Empty;
IPHostEntry ip = Dns.GetHostEntry(host);
foreach (IPAddress _IPAddress in ip.AddressList)
{
if (_IPAddress.AddressFamily.ToString() == "InterNetwork")
{
LocalIP = _IPAddress.ToString();
}
}
return LocalIP;
}
通过使用这个本地 IP 地址,我尝试获取 MAC 地址。
protected string GetMACAddressByIP(string ip)
{
try
{
ManagementObjectSearcher query= new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration");
ManagementObjectCollection queryCollection = query.Get();
bool Found = false;
foreach(ManagementObject _ManagementObject in queryCollection)
{
if (_ManagementObject["IPAddress"] != null)
{
string _IPAddress;
_IPAddress = string.Join(".", (string[])_ManagementObject["IPAddress"]);
if(!_IPAddress.Equals(""))
{
if(_IPAddress.Equals(ip.Trim()))
{
Found = true;
}
}
if(Found == true)
{
if (_ManagementObject["macaddress"] != null)
{
if (!_ManagementObject["macaddress"].Equals(""))
{
return (string)_ManagementObject["macaddress"];
}
}
}
else
{
Found = false;
}
}
}
MessageBox.Show("No Mac Address Found");
return "";
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
return "";
}
}
其中两个功能正常工作。
但我想做的是在同一 LAN 网络中获取其他 PC 的 IP 地址。
然后,如果我得到这些 IP 地址,那将是我的输入值
GetMACAddressByIP(string ip)
功能。
但我的问题是我不知道如何获取其他电脑的 IP 地址。
private List<string> GetRemoteIPs(string LocalIPAddress)
{
List<string> RemoteIPs = new List<string>();
/*** Here code will be as suggestion of yours. ****/
return RemoteIPs;
}
那么,下一个问题是
这是否可以获得已经关闭的PC的MAC地址?
每一个解决方案都将不胜感激。
【问题讨论】:
-
对于您的第一个问题,stackoverflow.com/questions/1993891/… 可能与此问题重复,看看是否有帮助。
标签: c# sockets networking