.net 根据IP地址获取域名

.net 根据IP地址获取域名,.net,.net,如果我有一个IP地址,我需要一个域名(例如,我键入209.85.129.103,程序应该会发现这是谷歌地址) 据我所知,获取主机名是: IPHostEntry IpToDomainName = Dns.GetHostEntry("209.85.129.103"); string HostName = IpToDomainName.HostName; //it returns "fk-in-f103.1e100.net" 但这不是我想要的。 我不知道如何做到这一点。任何想法都会很有帮助我想你说的

如果我有一个IP地址,我需要一个域名(例如,我键入209.85.129.103,程序应该会发现这是谷歌地址)

据我所知,获取主机名是:

IPHostEntry IpToDomainName = Dns.GetHostEntry("209.85.129.103");
string HostName = IpToDomainName.HostName; //it returns "fk-in-f103.1e100.net"
但这不是我想要的。
我不知道如何做到这一点。任何想法都会很有帮助

我想你说的是从主机名中获取顶级域名?TLD只是完整主机名的最后两个点分隔部分,因此函数如下所示:

public static string GetTopLevelDomain(string hostName)
{
    int lastDot = hostName.LastIndexOf('.');
    if (lastDot < 0)
        return hostName;
    int previousDot = hostName.LastIndexOf('.', lastDot - 1);
    return (previousDot >= 0) ? hostName.Substring(previousDot + 1) : hostName;
}
公共静态字符串GetToLevel域(字符串主机名)
{
int lastDot=hostName.LastIndexOf('.');
if(lastDot<0)
返回主机名;
int-previousDot=hostName.LastIndexOf('.',lastDot-1);
返回(previousDot>=0)?主机名。子字符串(previousDot+1):主机名;
}
如果你真的想找出谁拥有这个域名,你必须使用whois查找。这是一个例子。信息只是以纯文本的形式返回;请记住,它甚至不一定会告诉你拥有它的真实的人或公司,有时这些信息是私人的,你只会得到注册官(比如GoDaddy)


此外,不同的whois服务器将提供不同的信息和不同的区域;例如,您可以使用ARIN获取美国域名的信息,但对于欧洲域名,您需要使用RIME。老实说,我希望这不是你想要做的,因为你会发现这是一个相当大的沥青坑;没有简单的方法可以可靠地确定域X属于Y公司。

谷歌拥有
1e100.net
,因此这是一个谷歌地址。好的,但用户应该知道这就是谷歌我正在开发一个小型HTTP监视器,所以我需要知道用户是否键入“209.85.129.103”他会知道这是谷歌。com@Tony:仅当
209.85.129.103
的主机名实际上是
google.com
或其子域之一时,才能执行此操作。正如我所解释的,您可以尝试使用whois查找来获取更多信息,但我不得不说您在一艘正在下沉的船上-找到正确的whois服务器并解析其输出的过程非常复杂,而且极易出错,因为没有标准来管理其输出。我想你可以妥协一下,试着从arin.net解析whois文本,如果失败了,只需显示原始主机名或IP即可。