C# 获取网站';s服务器的IP地址

C# 获取网站';s服务器的IP地址,c#,asp.net,httpwebrequest,webrequest,C#,Asp.net,Httpwebrequest,Webrequest,我有一个函数,当您输入网站的url时,它会返回网站的服务器: private string GetWebServer() { string server = string.Empty; //get URL string url = txtURL.Text.Trim().ToLower(); if (!url.StartsWith("http://") && !url.StartsWith("https://")) url = "h

我有一个函数,当您输入网站的url时,它会返回网站的服务器:

private string GetWebServer()
{
    string server = string.Empty;

    //get URL
    string url = txtURL.Text.Trim().ToLower();
    if (!url.StartsWith("http://") && !url.StartsWith("https://"))
        url = "http://" + url;

    HttpWebRequest request = null;
    HttpWebResponse response = null;

    try
    {
        request = WebRequest.Create(url) as HttpWebRequest;
        response = request.GetResponse() as HttpWebResponse;

        server = response.Headers["Server"];
    }
    catch (WebException wex)
    {
        server = "Unknown";
    }
    finally
    {
        if (response != null)
        {
            response.Close();
        }
    }

    return server;
}
我还希望能够从IP地址而不是网站的url获取网站的服务器。但是如果我输入一个IP地址,在调用WebRequest.Create(url)时会出现一个错误,提示“无效的URI:无法确定URI的格式”


有人知道我如何修改它来实现我想要的吗?

您在使用IP地址时是否使用相同的方法?如果IP地址前面没有“http://”,将引发此错误。

否则,您可以从IP地址查找名称,然后在其他调用中使用该地址:

System.Net.Dns.GetHostEntry("127.0.0.1").HostName.ToString()

一个IP可以服务于多个域。您将没有1:1映射。您试图做的是反向DNS查找。有许多Web服务提供从IP服务的域的不完整列表。有一次,我不得不使用它们的组合来得到一个更完整的列表

以下是此类网站的小列表:

  • 我已经使用了以下DNS查找,也可以查找由同一IP提供服务的其他域:


  • 您是否试图从域内的客户端获取服务器名称?您是否试图获取您在家中浏览的某个站点的服务器名称,例如www.google.com,或者您是否试图获取您连接到的域上的服务器名称?我试图获取我浏览到的任何站点的服务器名称,比如www.microsoft.com。该页面从用户处获取url,并返回服务器。我想修改它,让用户输入一个IP地址而不是url,然后返回服务器。你能举一个url的例子吗?至少经过测试,一切正常。()例如返回“Microsoft IIS/7.5”。顺便说一句,response.Headers[“Server”]==response.Server。他得到的是参与请求测试的服务器,比如“Microsoft IIS/7.5”或“Apache/2.2.12(Unix)mod_ssl/2.2.12 OpenSSL/0.9.7d mod_wsgi/3.2 Python/2.6.5rc2”。服务器响应头。