gpt4 book ai didi

c# - 确定主机是否已解析 DNS 名称或 IP

转载 作者:可可西里 更新时间:2023-11-01 08:44:09 25 4
gpt4 key购买 nike

如果从 HttpContextHttpRequestHeaders 集合中提取一个 HOST 值,是有没有办法确定返回的值是 DNS 解析名称还是直接 IP 地址?

示例用法

 string host = HttpContext.Current.Request.Headers["HOST"]; 

if (host.IsIPAddress()) ... /// Something like this ?
or
(host.IsDNSResolved()) // Or this?

总结

很明显,可以对结果进行正则表达式模式测试以查找 IP 模式,但是 HttpContext 或更可能是 HttpRequest 上是否有属性,或者甚至是辅助类的外部静态方法,它可以改为执行该确定?

最佳答案

Uri.CheckHostName()怎么样? ?

这将返回一个 System.UriHostNameType .

例子:

Uri.CheckHostName("127.0.0.1"); //=> IPv4
Uri.CheckHostName("www.google.com"); //=> Dns
Uri.CheckHostName("localhost"); //=> Dns
Uri.CheckHostName("2000:2000:2000:2000::"); //=> IPv6

当然,要使用您建议的方式,最简单的方法是创建一个扩展,如下所示:

    public static class UriExtension {
public static bool IsIPAddress(this string input) {
var hostNameType = Uri.CheckHostName(input);

return hostNameType == UriHostNameType.IPv4 || hostNameType == UriHostNameType.IPv6;
}
}

这是结果:

"127.0.0.1".IsIPAddress(); //true
"2000:2000:2000:2000::".IsIPAddress(); //true
"www.google.com".IsIPAddress(); //false

关于c# - 确定主机是否已解析 DNS 名称或 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33054354/

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