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# ,