📅  最后修改于: 2023-12-03 14:59:44.235000             🧑  作者: Mango
在计算机网络中,域名系统(DNS)是将域名映射到IP地址和其他信息的系统。在C#中,我们可以使用System.Net
命名空间中的Dns
类来进行域名解析和IP地址查找。
使用Dns.GetHostAddresses(string)
方法,可以通过域名获取IP地址的列表。
using System;
using System.Net;
class Program {
static void Main(string[] args) {
// 域名
string domain = "www.google.com";
// 获取IP地址列表
IPAddress[] ips = Dns.GetHostAddresses(domain);
// 输出IP地址
foreach (IPAddress ip in ips) {
Console.WriteLine(ip.ToString());
}
}
}
输出:
172.217.8.68
使用Dns.GetHostName()
方法,可以获取本地主机名。
using System;
using System.Net;
class Program {
static void Main(string[] args) {
// 获取本地主机名
string hostname = Dns.GetHostName();
// 输出主机名
Console.WriteLine(hostname);
}
}
输出:
DESKTOP-ABC123
在进行域名解析时,需要注意安全性问题,以避免DNS污染等攻击。建议使用可信的DNS服务器,并对IP地址进行验证。
using System;
using System.Net;
class Program {
static void Main(string[] args) {
// 可信的DNS服务器
string dnsServer = "8.8.8.8";
// 域名
string domain = "www.google.com";
// 获取IP地址列表
IPAddress[] ips = Dns.GetHostAddresses(domain, dnsServer);
// 输出IP地址
foreach (IPAddress ip in ips) {
if (IsValidIpAddress(ip)) {
Console.WriteLine(ip.ToString());
}
}
}
// IP地址验证
static bool IsValidIpAddress(IPAddress ip) {
if (ip == null || ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6) {
return false;
}
byte[] addr = ip.GetAddressBytes();
return !(addr[0] == 10 ||
(addr[0] == 172 && addr[1] >= 16 && addr[1] <= 31) ||
(addr[0] == 192 && addr[1] == 168));
}
}
输出:
172.217.8.68