NET, ASP.NET, AJAX, ASP.NET AJAX, JavaScript, WEB, WEB2.0, Neoking, Neoayi, Microsoft, SilverLight, CSS
代码改变世界

C#查询Whois代码

2007-10-15 15:57  黄明  阅读(360)  评论(0)    收藏  举报
 1 using System;
 2 using System.Data;
 3 using System.Configuration;
 4 using System.Web;
 5 using System.Web.Security;
 6 using System.Web.UI;
 7 using System.Web.UI.WebControls;
 8 using System.Web.UI.WebControls.WebParts;
 9 using System.Web.UI.HtmlControls;
10 using System.Net;
11 using System.Net.Sockets;
12 using System.Text;
13 public partial class _Default : System.Web.UI.Page 
14 {
15     protected void Page_Load(object sender, EventArgs e)
16     {
17 
18     }
19     protected void Button1_Click(object sender, EventArgs e)
20     {
21         string _r = Whois(TextBox1.Text.Trim());
22         
23         Response.Write(_r.Replace("\r\n","<br>"));
24     }
25 
26     /**//// <summary>
27     /// 域名注册查询
28     /// </summary>
29     /// <param name="domain">输入域名,不包含www</param>
30     /// <returns></returns>
31     public static string Whois(string domain)
32     {
33         if (domain == null)
34             throw new ArgumentNullException();
35         int ccStart = domain.LastIndexOf(".");
36         if (ccStart < 0 || ccStart == domain.Length)
37             throw new ArgumentException();
38         string ret = "";
39         Socket s = null;
40         try
41         {
42             string cc = domain.Substring(ccStart + 1);
43             s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
44             s.Connect(new IPEndPoint(Dns.Resolve(cc + ".whois-servers.net").AddressList[0], 43));
45             s.Send(Encoding.ASCII.GetBytes(domain + "\r\n"));
46             byte[] buffer = new byte[1024];
47             int recv = s.Receive(buffer);
48             while (recv > 0)
49             {
50                 ret += Encoding.ASCII.GetString(buffer, 0, recv);
51                 recv = s.Receive(buffer);
52             }
53             s.Shutdown(SocketShutdown.Both);
54         }
55         catch
56         {
57             throw new SocketException();
58         }
59         finally
60         {
61             if (s != null)
62                 s.Close();
63         }
64         return ret;
65     }
66 }