私は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は登録されていません。
ドメイン名の正しいステータスを見つけるにはどうすればよいですか?