Недавно потребовалось написать программу которая проверяла домены в зонах .com, .net, .org на занятость. Что бы это узнать, нужно произвести Whois запрос, который и расскажет нам о регистрационных данных владельца доменна и ещё некую информацию. Соответственно если записи не будет найдено, то значит домен свободен. Сначало я начал посылать запросы и парсить ответы от HTTP ресурсов, таких как nic.ru/whois/, но понимал, что есть способ другой. И правда он есть. Можно отсылать Tcp запросы напрямую на whois сервер. Для доменов .com, .net, .org я выбрал internic.net сервер. Вот небольшой пример работы:
string txtResponse = ""; string strResponse = ""; TcpClient tcpWhois = new TcpClient("whois.internic.net", 43); NetworkStream nsWhois = tcpWhois.GetStream(); BufferedStream bfWhois = new BufferedStream(nsWhois); StreamWriter swSend = new StreamWriter(bfWhois); swSend.WriteLine("google.com"); swSend.Flush(); StreamReader srReceive = new StreamReader(bfWhois); while ((strResponse = srReceive.ReadLine()) != null) { txtResponse += strResponse + "\r\n"; } tcpWhois.Close(); Console.WriteLine(txtResponse);
К посту прикрепил класс, который парсет ответ и пишет, свободен ли домен или занят. Класс и пример переделал из примера на geekpedia.com.
WhoisClass (2.5 Кб, 763 скачиваний)
Спонсор поста: Лучшие игрушки лего по низким ценам.