gpt4 book ai didi

c# - 确定域名在 "hosts"文件中是否有效的最佳方法?

转载 作者:可可西里 更新时间:2023-11-01 08:02:18 32 4
gpt4 key购买 nike

Windows Hosts file允许您将 IP 关联到 host name比普通的 Internet 域名具有更大的自由度。我想创建一个函数来确定给定名称是否是有效的“主机”文件域名。

基于 this answer以及对哪些有效和无效的实验,我想出了这个功能:

private static bool IsValidDomainName(string domain)
{
if (String.IsNullOrEmpty(domain) || domain.Length > 255)
{
return false;
}

Uri uri;

if (!Uri.TryCreate("http://" + domain, UriKind.Absolute, out uri))
{
return false;
}

if (!String.Equals(uri.Host, domain, StringComparison.OrdinalIgnoreCase) || !uri.IsWellFormedOriginalString())
{
return false;
}

foreach (string part in uri.Host.Split('.'))
{
if (part.Length > 63)
{
return false;
}
}

return true;
}

它还有一个好处,它应该与 Unicode 名称一起使用(基本的正则表达式会失败)。

是否有更好/更优雅的方法来做到这一点?

更新:根据 Bill 的建议, Uri.CheckHostName方法几乎可以满足我的要求,但它不允许 Windows 在“主机”文件中允许的主机名,如“-test”。我会特例“-”部分,但我担心还有更多特例。

最佳答案

System.Uri.CheckHostName()怎么样?方法?

private static bool IsValidDomainName(string name)
{
return Uri.CheckHostName(name) != UriHostNameType.Unknown;
}

为什么要自己做?

关于c# - 确定域名在 "hosts"文件中是否有效的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/967516/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com