当前位置:编程学习 > C#/ASP.NET >>

C# Who Is查询

简介

 

--------------------------------------------------------------------------------
   也许还有很多朋友不知Who Is是什么东西?是作什么 的,有什么用处,其实我也是刚刚接触这一块,拿出来跟大家分享一下,也希望能得到高手的指点。
 

Who Is 应该说是站长工具的一种,像51.la,aizhan.com上都有这样的工具,他的真正作用就是输入域名可以查询到这个域名的详细信息,比如到期时间,注册时间,更新时间,联系人,注册商,联系电话 ,QQ等 等。

应该是这样讲,一般站长或者IDC行业用的相当的多。

像我们自己也可以没事查查,自己喜欢的域名是否已被注册或是什么时候到期。当然你也可以查询一下到期时间和联系方式进行高价回收。

    whois查询,其实不同的域名类型都有相就的终极Whois服务器存在,大约有200多种吧,这个也不是很难找我们可以在Google上找到,但从这上面只能查到一些简单的信息,如果要查询更详细 的域名信息的话,就要从他所在的Whois服务器查询了,所以我们的程序应该是分两步走的,

第一步是查询终级WhoIS服务器。

第二步根据上面提供的所在Whois服务器然后再进行,进一步的详细查询 ,这时把两个结果合到一起才能得到我们想要的详细信息。

实现流程

 

--------------------------------------------------------------------------------
第一步:我们先来写一个用来查询Whois服务器信息的方法,我们都知道查询域名的Whois信息应该是访问所在服务器的43端口,只要我们使用程序把要查询的域名通过whois服务器的43端口传入就可以接收到返回的Whois信息了,有了这个提示,下面应该不难了吧,一起看下代码吧
 

 

View Code
 /// <summary>
        /// 查询域名的 WhoIs 信息 终端查询方式
        /// </summary>
        /// <param name="domain">要查询的域名</param>
        /// <param name="server">WhoIs 服务器地址</param>
        /// <param name="port">WhoIs 服务器端口</param>
        /// <returns>
        /// 执行成功: 返回详细的WhoIs信息
        /// 执行失败:返回相就的异常或是错误信息
        /// </returns>
        public static string BaseType(string domain, string server, int port = 43)
        {
            // 连接域名 Whois 查询服务器
            TcpClient tcp = new TcpClient();
            //return string
            string returnstr = "String Error";
            try
            {
                tcp.Connect(server, port);
            }
            catch (SocketException e)
            {
                returnstr = "连接 Whois 服务器失败 : " + e.Message.Trim();
            }

            // 向域名 Whois 查询服务器发送查询的域名
            try
            {
                //构造发送的字符串
                domain += "\r\n";
                Byte[] DomainBytes = System.Text.Encoding.ASCII.GetBytes(domain.ToCharArray());

                // 将域名发送到域名 Whois 查询服务器
                Stream WhoisStream = tcp.GetStream();
                WhoisStream.Write(DomainBytes, 0, domain.Length);
                StreamReader WhoisStreamReader = new StreamReader(WhoisStream, System.Text.Encoding.UTF8);
                returnstr = WhoisStreamReader.ReadToEnd().Trim();
            }
            catch (Exception e)
            {
                returnstr = "域名 '" + domain + "' 的 Whois 查询失败 : " + e.Message.Trim();
            }
            finally
            {
                tcp.Close();
            }
            return returnstr;
        }
端口我是默认的,WhoIs 服务器地址是怎么得到的呢?

第二步得到终级Whois服务器地址,这个可以从网上下载 一个列表,在做列表之前咱们先来创建两家Item吧

 

View Code
  /// <summary>
    /// 表示一个顶级域的 WhoIs 服务器地址
    /// </summary>
    public class WhoIsServerItem
    {
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="tld">顶级域</param>
        /// <param name="server">WhoIs 服务器地址</param>
        public WhoIsServerItem(string tld, string server)
        {
            this.Tld = tld;
            this.Server = server;
        }

        /// <summary>
        /// 顶级域
        /// </summary>
        public string Tld { get; set; }

        /// <summary>
        /// WhoIs 服务器地址
        /// </summary><

补充:软件开发 , C# ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,