C# 使用 Dns 将主机名解析为 IP 地址
C# Resolve hostname with Dns to IP Address
收到我在办公室用 C# 编写的程序。
所以我可以从域中读取所有计算机名称,将它们填入列表并打印出来。
使用此代码:
`private void FindComputersInAD()
{
List<string> computerNames = new List<string>();
DirectoryContext dirCtx = new DirectoryContext(DirectoryContextType.Domain, "domain.com");
using (Domain usersDomain = Domain.GetDomain(dirCtx))
using (DirectorySearcher adsearcher = new DirectorySearcher(usersDomain.GetDirectoryEntry()))
{
adsearcher.Filter = ("(objectCategory=computer)");
adsearcher.SizeLimit = 0;
adsearcher.PageSize = 250;
// Let searcher know which properties are going to be used, and only load those
adsearcher.PropertiesToLoad.Add("name");
foreach (SearchResult searchResult in adsearcher.FindAll())
{
if (searchResult.Properties["name"].Count > 0)
{
string computer = (string)searchResult.Properties["name"][0];
computerNames.Add(computer);
}
}
}
computerNames.Sort();
computerNames.ForEach(Console.WriteLine);
}`
既然我得到了所有的计算机名称,我还想得到它们的 IP 地址。
但是没有这样的属性.
我在谷歌上搜索了很多并尝试了一些东西,但没有任何效果。
我可以使用 DNS class 来执行此操作吗?
我使用此方法获取主机 IP 地址:
private void GetLocalIPAddress()
{
string _subString;
var _host = Dns.GetHostEntry(Dns.GetHostName());
foreach (var _ip in _host.AddressList)
{
if (_ip.AddressFamily == AddressFamily.InterNetwork)
{
_subString = _ip.ToString().Substring(_ip.ToString().Length - 2);
//When a IP Address ends with .1, don't add it to the List.
if (_subString != ".1")
{
_hostIPAddress = _ip.ToString();
}
}
}
}
我也可以用它来获取计算机的 IP 地址吗?
如果你能帮助我,我会很高兴:)
提前致谢
所以我找到了答案。
由于所有计算机都在同一个域中,我打开 cmd 并尝试了 nslookup。
它返回了我想要的 IP 地址。
所以我刚刚构建了一个 C# DNSLookup 方法,如下所示:
private void DNSLookup(string computerNameOrAddress)
{
IPHostEntry hostEntry = Dns.GetHostEntry(computerNameOrAddress);
IPAddress[] ips = hostEntry.AddressList;
foreach (IPAddress ip in ips)
{
Console.WriteLine(" Address: {0}", ip);
}
}
无论如何感谢您的观看:)
收到我在办公室用 C# 编写的程序。
所以我可以从域中读取所有计算机名称,将它们填入列表并打印出来。
使用此代码:
`private void FindComputersInAD()
{
List<string> computerNames = new List<string>();
DirectoryContext dirCtx = new DirectoryContext(DirectoryContextType.Domain, "domain.com");
using (Domain usersDomain = Domain.GetDomain(dirCtx))
using (DirectorySearcher adsearcher = new DirectorySearcher(usersDomain.GetDirectoryEntry()))
{
adsearcher.Filter = ("(objectCategory=computer)");
adsearcher.SizeLimit = 0;
adsearcher.PageSize = 250;
// Let searcher know which properties are going to be used, and only load those
adsearcher.PropertiesToLoad.Add("name");
foreach (SearchResult searchResult in adsearcher.FindAll())
{
if (searchResult.Properties["name"].Count > 0)
{
string computer = (string)searchResult.Properties["name"][0];
computerNames.Add(computer);
}
}
}
computerNames.Sort();
computerNames.ForEach(Console.WriteLine);
}`
既然我得到了所有的计算机名称,我还想得到它们的 IP 地址。 但是没有这样的属性.
我在谷歌上搜索了很多并尝试了一些东西,但没有任何效果。
我可以使用 DNS class 来执行此操作吗?
我使用此方法获取主机 IP 地址:
private void GetLocalIPAddress()
{
string _subString;
var _host = Dns.GetHostEntry(Dns.GetHostName());
foreach (var _ip in _host.AddressList)
{
if (_ip.AddressFamily == AddressFamily.InterNetwork)
{
_subString = _ip.ToString().Substring(_ip.ToString().Length - 2);
//When a IP Address ends with .1, don't add it to the List.
if (_subString != ".1")
{
_hostIPAddress = _ip.ToString();
}
}
}
}
我也可以用它来获取计算机的 IP 地址吗?
如果你能帮助我,我会很高兴:)
提前致谢
所以我找到了答案。 由于所有计算机都在同一个域中,我打开 cmd 并尝试了 nslookup。 它返回了我想要的 IP 地址。
所以我刚刚构建了一个 C# DNSLookup 方法,如下所示:
private void DNSLookup(string computerNameOrAddress)
{
IPHostEntry hostEntry = Dns.GetHostEntry(computerNameOrAddress);
IPAddress[] ips = hostEntry.AddressList;
foreach (IPAddress ip in ips)
{
Console.WriteLine(" Address: {0}", ip);
}
}
无论如何感谢您的观看:)