我正在用 c# 开发一个简单的应用程序,它可以检查一个域名是否可用于购买特定的 tld。方法:我下载了一个whois-server列表,我用协议43的TCP客户端将域名发送到它的whois服务器,并检查服务器的回答。问题:更多国家拥有相同的 whois 服务器:“whois.ripe.net”。如果我发送完整的域名(带有 tld),服务器的回答总是“在源 RIPE 中找不到条目。”。如果我发送没有 tld 的域名,我不会得到任何关于域名状态的 tld 特定数据。
我使用的方法:
private string GetWhoisInformation(string whoisServer, string url)
{
try
{
StringBuilder stringBuilderResult = new StringBuilder();
TcpClient tcpClinetWhois = new TcpClient(whoisServer, 43);
NetworkStream networkStreamWhois = tcpClinetWhois.GetStream();
BufferedStream bufferedStreamWhois = new BufferedStream(networkStreamWhois);
StreamWriter streamWriter = new StreamWriter(bufferedStreamWhois);
streamWriter.WriteLine(url);
streamWriter.Flush();
StreamReader streamReaderReceive = new StreamReader(bufferedStreamWhois);
while (!streamReaderReceive.EndOfStream)
stringBuilderResult.AppendLine(streamReaderReceive.ReadLine());
return stringBuilderResult.ToString();
}
catch
{
return "lekérdezés sikertelen";
}
}
示例:我这样做:
GetWhoisInformation("whois.ripe.net", "pokerstars.hu")
服务员的回答:
%ERROR:101: no entries found
%
% No entries found in source RIPE.
对于下一个命令:
GetWhoisInformation("whois.ripe.net", "pokerstars")
结果包含几个这样的块:
% Information related to '80.65.254.128 - 80.65.254.159'
inetnum: 80.65.254.128 - 80.65.254.159
netname: Pokerstars
descr: Hosting
country: GB
admin-c: DC77-RIPE
tech-c: JM2352-RIPE
status: assigned PA
mnt-by: manx-telecom-mnt
changed: bill.hogg@manx-telecom.com 20101123
source: RIPE
没有关于域名“pokerstars.hu”的信息。当然,如果我想查看 pokerstars.va,我会得到完全相同的答案。Pokerstars.hu 是注册域名,pokerstars.va 不是。
如何找到域名的正确状态?