Форум: "Сети";
Текущий архив: 2003.03.17;
Скачать: [xml.tar.bz2];
ВнизБыстрый gethostbyaddr Найти похожие ветки
← →
dumb (2003-01-27 09:10) [0]Вот такой стандартный код, но мне кажется он работает медленно. Вы можете сказать, что это из-за конфигурации моей сети и т.д. Возможно.. Я прошу вас показать мне какой-нибудь аналог для сравнения.
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;
← →
dumb (2003-01-27 09:21) [1]Желательно с TIdDNSResolver :)
← →
dumb (2003-01-27 14:49) [2]Еще одно наблюдение, которое подтверждает мои опасения - системная утилита nslookup работает мгновенно, а gethostbyaddr - гораздо медленнее. Разница ощущается букально невооруженным глазом. Особенно это ощущается при лукапе IP несуществующих доменов - nslookup возвращает ответ мгновенно, gethostbyaddr - "думает" 4-5 секунд.
← →
Wonder (2003-01-27 15:17) [3]nslookup, насколько я помню, не использует вызов gethostbyaddr, а общается с name-сервером напрямую, в следствие чего и работает быстрее.
Именно твой код, на мой взгляд, "убыстрить" нереально :) Т.е. он работает как и должен работать.
← →
dumb (2003-01-27 15:22) [4]Совершенно верно. Мой код убыстрять не надо, мне надо аналог моей функции, но, как вы правильно сказали, работающий напрямую (как nslookup).
← →
Wonder (2003-01-27 15:46) [5]К сожалению, таких задач не решал.
Совет: взять исходники nslookup-а (например, под Linux) и портировать на win32.
Можно попытаться в Сети найти исходники сразу под win32, хотя это маловероятно...
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2003.03.17;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.01 c