我有4个以太网接口,在我的电脑(获得由ipconfig信息/全部)C#获取本地IP(多个接口)本地MAC地址
例如:
1)IP:192.168.15.161 ,MAC:00-E2-4C-98-18-89
2)IP:172.168.11.126,MAC:00-FF-4C-98-18-44
3)IP:10.0.13.136,MAC:00-EE-89-98-13-44
4)IP:195.22.18.146,MAC:00-12-89-98-13-33
我需要一个返回功能给定IP时的MAC地址。
例如getMacByIP("192.168.15.161")
将返回"00-E2-4C-98-18-89"
使用arp
不工作的地方!
例如arp -a
不会与MAC
给本地地址于是所有的问题/像here答案是没有帮助我。
在问这个问题之前,我在网上搜了很多。
编辑:
这个答案:(link)不帮助我
public static string GetMacAddressUsedByIp(string ipAddress)
{
var ips = new List<string>();
string output;
try
{
// Start the child process.
Process p = new Process();
// Redirect the output stream of the child process.
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.FileName = "ipconfig";
p.StartInfo.Arguments = "/all";
p.Start();
// Do not wait for the child process to exit before
// reading to the end of its redirected stream.
// p.WaitForExit();
// Read the output stream first and then wait.
output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
}
catch
{
return null;
}
// pattern to get all connections
var pattern = @"(?xis)
(?<Header>
(\r|\n) [^\r]+ : \r\n\r\n
)
(?<content>
.+? (?= ((\r\n\r\n)|($)))
)";
List<Match> matches = new List<Match>();
foreach (Match m in Regex.Matches(output, pattern))
matches.Add(m);
var connection = matches.Select(m => new
{
containsIp = m.Value.Contains(ipAddress),
containsPhysicalAddress = Regex.Match(m.Value, @"(?ix)Physical \s Address").Success,
content = m.Value
}).Where(x => x.containsIp && x.containsPhysicalAddress)
.Select(m => Regex.Match(m.content, @"(?ix) Physical \s address [^:]+ : \s* (?<Mac>[^\s]+)").Groups["Mac"].Value).FirstOrDefault();
return connection;
}
因为如果我使用,例如,中国版本的Windows,正则表达式将无法正常工作!
[可靠的方法,在C#中获取机器的MAC地址(的可能的复制https://stackoverflow.com/questions/850650/可靠的方法来获取机器mac地址在c-sharp) – Svek
不!这是不正确的!所有的答案都没有解决我的问题。他们返回第一个/主动。我想通过IP来获得特定的MAC。一个答案给这个功能,但它不是很好的答案!因为如果我的窗户不是英文的,它不会起作用! – cheziHoyzer
您没有阅读所有答案,或试图了解这类问题的复杂性。还有很多其他的事情需要考虑,比如分配给一个接口的地址的数量,以及你试图匹配的地址的类型等。 – Svek