![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Быстрый gethostbyaddr [D5, WinXP]
dumb © (2003-01-27 09:10:00)Вот такой стандартный код, но мне кажется он работает медленно. Вы можете сказать, что это из-за конфигурации моей сети и т.д. Возможно.. Я прошу вас показать мне какой-нибудь аналог для сравнения.
function GetHostName(AIP: string) : string;
var
wsdata : TWSAData;
he : PHostEnt;
ip : TInAddr;
begin
Result := AIP;
WSAStartup(MakeWord(1, 1), wsdata);
ip.S_addr := inet_addr(PChar(AIP));
he := gethostbyaddr(@ip.S_un_b, 4, AF_INET);
if he<>nil then
Result := string(he.h_name);
WSACleanup();
end;
Wonder (2003-01-27 15:46:00) [1]К сожалению, таких задач не решал.
Совет: взять исходники nslookup-а (например, под Linux) и портировать на win32.
Можно попытаться в Сети найти исходники сразу под win32, хотя это маловероятно...
dumb (2003-01-27 15:22:00) [2]Совершенно верно. Мой код убыстрять не надо, мне надо аналог моей функции, но, как вы правильно сказали, работающий напрямую (как nslookup).
Wonder (2003-01-27 15:17:00) [3]nslookup, насколько я помню, не использует вызов gethostbyaddr, а общается с name-сервером напрямую, в следствие чего и работает быстрее.
Именно твой код, на мой взгляд, "убыстрить" нереально :) Т.е. он работает как и должен работать.
dumb (2003-01-27 14:49:00) [4]Еще одно наблюдение, которое подтверждает мои опасения - системная утилита nslookup работает мгновенно, а gethostbyaddr - гораздо медленнее. Разница ощущается букально невооруженным глазом. Особенно это ощущается при лукапе IP несуществующих доменов - nslookup возвращает ответ мгновенно, gethostbyaddr - "думает" 4-5 секунд.
dumb (2003-01-27 09:21:00) [5]Желательно с TIdDNSResolver :)