tawer
Junior Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору rain87 Не запуская внешнюю утилиту, с использованимем dnsapi.dll наверно. Есть такие наработки, но это написано под Visual C++, м/б кто нибудь поможет портировать под Builder: Код: #include <iostream> #include <winsock2.h> #include <windows.h> #include <windns.h> #pragma comment (lib, "dnsapi.lib") #pragma comment (lib, "ws2_32.lib") int main(void) { using std::cout; using std::cerr; using std::endl; PDNS_RECORD pDnsRecord, p; DNS_STATUS Ret; IP4_ARRAY DnsServ = {1, inet_addr("здесь IP адрес сервера")}; Ret = DnsQuery("здесь имя зоны", DNS_TYPE_AXFR, DNS_QUERY_USE_TCP_ONLY, 0, &pDnsRecord, NULL); p = pDnsRecord; if(Ret == 0) while(p){ switch(p->wType){ case DNS_TYPE_A: cout << p->pName << "\t\t" << p->dwTtl << " A\t" << inet_ntoa(*reinterpret_cast<in_addr*>(&p->Data.A)) << endl; break; case DNS_TYPE_NS: cout << "\t\t\t" << p->dwTtl << " NS\t"<< p->pName << endl; break; case DNS_TYPE_CNAME: cout << p->pName << "\t\t" << p->dwTtl << " CNAME\t" << p->Data.CNAME.pNameHost << endl; break; case DNS_TYPE_SOA: cout << "$ORIGIN " << p->pName << endl << "@\t\t\t" << p->dwTtl << " SOA\t" << p->Data.SOA.pNamePrimaryServer << " " << p->Data.SOA.pNameAdministrator << " (\n\t\t\t" << p->Data.SOA.dwSerialNo << "\t; serial\n\t\t\t" << p->Data.SOA.dwRefresh << "\t; refresh\n\t\t\t" << p->Data.SOA.dwRetry << "\t; retry\n\t\t\t" << p->Data.SOA.dwExpire << "\t; expiry\n\t\t\t" << p->Data.SOA.dwDefaultTtl << "\t; minimum\n"; break; case DNS_TYPE_MX: cout << "\t\t\t" << p->dwTtl << " MX " << p->Data.MX.wPreference << "\t" << p->Data.MX.pNameExchange << endl; break; /* etc.. */ } p = p->pNext; } else { cerr << "DnsQuery fail with code " << Ret << endl; return 1; } DnsRecordListFree(pDnsRecord, DnsFreeRecordList); return 0; } |
| Всего записей: 119 | Зарегистр. 07-01-2004 | Отправлено: 16:32 08-03-2007 | Исправлено: tawer, 16:46 08-03-2007 |
|