Russian Qt Forum

Qt => Работа с сетью => Тема начата: Admin от Июнь 11, 2009, 16:37



Название: Нужно получать whois доменов.
Отправлено: Admin от Июнь 11, 2009, 16:37
Не подскажет ли кто библиотеку или компонент для получения whois по домену.

типа

Цитировать
whois prog.org.ru
% By submitting a query to RIPN's Whois Service
% you agree to abide by the following terms of use:
% http://www.ripn.net/about/servpol.html#3.2 (in Russian)
% http://www.ripn.net/about/en/servpol.html#3.2 (in English).

domain:  PROG.ORG.RU
type:    CORPORATE


Название: Re: Нужно получать whois доменов.
Отправлено: mugabe от Июнь 15, 2009, 09:49
Их не существует по причине отсутствия необходимости в них :)

Код на красоту не претендует, т.к. писался на скорую руку. Но он рабочий и суть, думаю, ясна :)

Код
C++ (Qt)
void MainWindow::on_pushButton_clicked()
{
   QString domain = ui->lineEdit->text();
   QStringList domain_s = domain.split(".");
   QString zone = domain_s.at(domain_s.count() - 1);
 
   QString whois_server = QString("%1.whois-servers.net").arg(zone);
 
   tcpSocket = new QTcpSocket(this);
   connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(readWhois()));
   connect(tcpSocket, SIGNAL(connected()), this, SLOT(connectedWhois()));
   tcpSocket->connectToHost(whois_server, 43);
}
 
 
void MainWindow::readWhois()
{
   if (tcpSocket->bytesAvailable() > 0) {
       QString s = tcpSocket->readAll();
       ui->plainTextEdit->setPlainText(s);
   }
}
 
void MainWindow::connectedWhois()
{
   QString wr = QString("%1\n").arg(ui->lineEdit->text());
   tcpSocket->write(wr.toStdString().c_str());
}


Название: Re: Нужно получать whois доменов.
Отправлено: Admin от Июнь 15, 2009, 10:37
ооо - спасибо - обязательно запробую


Название: Re: Нужно получать whois доменов.
Отправлено: SABROG от Июнь 25, 2009, 08:55
Код
C++ (Qt)
   tcpSocket->write(wr.toStdString().c_str());
}

Красота красотой, но уже третий раз встречаю подобную запись, почему не так?

Код
C++ (Qt)
   tcpSocket->write(wr.toAscii());
 

Тем более, что на некоторых сборках Qt - toStdString() может не работать:

Цитировать
This operator is only available if Qt is configured with STL compatibility enabled.


Название: Re: Нужно получать whois доменов.
Отправлено: mugabe от Июнь 26, 2009, 12:55
Потому что писал на скорую руку, всех методов QString не знаю, потребности получить char* в Qt пока что не возникало. Что первое нашел, то и сделал :)


Название: Re: Нужно получать whois доменов.
Отправлено: Alex Custov от Июль 04, 2009, 19:21
Их не существует по причине отсутствия необходимости в них :)

Есть модули для перла -  libnet-xwhois-perl например.


Название: Re: Нужно получать whois доменов.
Отправлено: Admin от Июль 05, 2009, 14:26
Не под другие языки не интересно. Интересно на Qt или на C++. :)
Под php у меня целый скрипт - разные домены разные whois сервера. Буду его на Qt переводить.


Название: Re: Нужно получать whois доменов.
Отправлено: Admin от Июль 09, 2009, 11:59
Написал программку, к сожалению получает данные о домене не стабильно, через раз. Возможно у whois серверов есть ограничения на количество запросов. К сожалению снифера нет под рукой, что бы глянуть куда стандартная whois лазает.